목록컴퓨터공학/알고리듬 풀이 (134)
cyphen156

풍선 터트리기풍선 : 원형 리스트풍선 내부 종이 : data1번 풍선을 터트리고 그 안의 data만큼 이동하여 다음 풍선을 터트린다. -> pop() 제약사항0 -N N data != 0주의 사항없다.CPP풀이풍선 터트리기_2346.cpp/** * 백준 풍선 터트리기_2346 * 풍선 : 이중연결 리스트 * 풍선 내부 종이 : data * 1번 풍선을 터트리고 그 안의 data만큼 이동하여 다음 풍선을 터트린다.-> pop() * * 제한사항 ***************************************** * 0 using namespace std;struct Node { int _index; int _data; Node* prev; Node* next;};Node* ..

덱 2덱은 앞뒤로 자료를 넣고 뺄 수 있는 양방향 큐이다.정수를 저장하는 덱을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 여덟 가지이다.1 X: 정수 X를 덱의 앞에 넣는다. (1 ≤ X ≤ 100,000)2 X: 정수 X를 덱의 뒤에 넣는다. (1 ≤ X ≤ 100,000)3: 덱에 정수가 있다면 맨 앞의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.4: 덱에 정수가 있다면 맨 뒤의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.5: 덱에 들어있는 정수의 개수를 출력한다.6: 덱이 비어있으면 1, 아니면 0을 출력한다.7: 덱에 정수가 있다면 맨 앞의 정수를 출력한다. 없다면 -1을 대신 출력한다.8: 덱에 정수가 있다면 맨 뒤의 정수를 출력한다. 없다..

요세푸스 문제 0원형 리스트를 사용한 문제K번째배 순서에 있는 사람을 리스트에서 제거하는데, 리스트의 끝에 도달하면 다시 헤드로 돌아가서 연속해서 순서를 센다. Ex) 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4 ... 이렇게 계속 논리적으로 이어져 있다고 보면 된다.간단하게 구현하자면 K번째 까지 가기 전까지 Dequeue(Enqueue()) 연산을 계속 한다., K번째에서는 항상 Dequeue()연산만 한다. 언제까지? Size()가 1이 될 때 까지그런데 이렇게 하면 큐 사이즈가 얼마나 커질 지 모른다. 그래서 고정사이즈 Q를 사용한다고 가정한다면 중간에서 요소를 삭제하는 Delete()연산과 남은 요소들을 재배치하는 연산이 있어야 한다.재배치 연산은 비용이 크게 드므로 그냥 요소가 삭..

카드 21부터 N까지 순서대로 정렬되어 있는 카드뭉치가 존재한다.가장 위에 있는 카드를 바닥에 버리고 다음 카드는 기존 카드의 맨 아래로 이동마지막 한장이 남을때까지 반복했을 때 마지막 한장에 남은 수를 출력하라제약사항0 주의 사항없다.CPP풀이카드 2_2164.cpp/** * 백준 카드 2_2164 * 1부터 N까지 순서대로 정렬되어 있는 카드뭉치가 존재한다. * 가장 위에 있는 카드를 바닥에 버리고 * 다음 카드는 기존 카드의 맨 아래로 이동 * 마지막 한장이 남을때까지 반복했을 때 마지막 한장에 남은 수를 출력하라 * * 제한사항 ***************************************** * 0 using namespace std;#define MAX_SIZE 1000001sta..

큐 2큐를 구현하라명령은 총 여섯 가지이다.push X: 정수 X를 큐에 넣는 연산이다.pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 큐에 들어있는 정수의 개수를 출력한다.empty: 큐가 비어있으면 1, 아니면 0을 출력한다.front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.제약사항0 0 주의 사항없다.CPP풀이큐 2_18258.cpp/** * 백준 큐 2_18258 * 큐 2_18258 * 명령은 총 여섯 가지이다. * push X: 정수 X를 큐에 ..

도키도키 간식드리미현재의 줄은 Queue의 형태로 구현되어 있다. 그런데 한명 씩만 설 수 있는 임시 공간으로 한번 들어간다면 다시 현재 줄 서 있는 곳으로 돌아갈 수 없고 간식받는 곳으로만 갈 수 있다. 현재 줄 서있는 곳 : Queue -> 2 Or 3한 명씩만 설 수 있는 공간 : Stack -> 3간식받는곳 : Queue -> Escape다음 그림을 참고하자. 제약사항0 만약 모든 학생이 탈출할 수 있다면 Nice한명이라도 탈출할 수 없다면 Sad주의 사항없다.CPP풀이도키도키 간식드리미_12789.cpp/** * 백준 도키도키 간식드리미_12789 * 현재의 줄은 Queue의 형태로 구현되어 있다. * 그런데 한명 씩만 설 수 있는 임시 공간으로 한번 들어간다면 다시 현재 줄 서 있는 곳으로 ..

균형잡힌 세상문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다.모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다.모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다.모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다.모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다.짝을 이루는 두 괄호가 있을 때, 그 사이에 있는 문자열도 균형이 잡혀야 한다.앞서 푼 괄호의 응용문제이 문제는 C와 C#으로 풀어놓은 것이 있어 이것도 같이 공유하겠다.제약사항온점이 들어오면 문자열은 끝난다.0 첫번째 문자 입력이 '.'이라면 루프 종료주의 사항..

괄호올바르지 않은 괄호 쌍이 존재하는지 아닌지를 판단해서 YES와 NO로 출력하라.제약사항Correct : (())InCorrect : )(()(), (()2 주의 사항저처럼 stdio 헤더랑 iostream 같이 쓰면 오답처리되니 하지마세요 CPP풀이괄호_9012.cpp/** * 백준 괄호_9012 * 올바르지 않은 괄호 쌍이 존재하는지 아닌지를 판단해서 YES와 NO로 출력하라. * * 제한사항 ***************************************** * Correct : (()) * * InCorrect : )(()(), (() * ***************************************** * * ..