4

10866번: 덱

https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 덱을 구현한 뒤 입력받는 명령에 따라 덱의 각 연산을 실행한다. 이 때 덱은 입출력하는 위치가 front와 back 두 곳이므로 front와 back의 인덱스 계산이 복잡해지는데, 입력받는 정수의 최대 개수 N에 대해 공간을 2 * N개 사용하고, 시작 인덱스를 0이 아닌 N으로 잡아 인덱스 계산을 최대한 간편하게 만든다. #include #include using namespac..

5430번: AC

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net deque를 활용하는 문제이다. deque에 배열을 모두 저장한 뒤, 배열을 뒤집는 것은 bool 변수에 저장한 다음, 값을 제거하는 것은 bool 변수의 값에 따라서 deque의 앞 혹은 뒤의 값을 제거하면 된다. #include #include #include using namespace std; #define MAX_P 100000 void test_case() { // 배열이 뒤집혔다면 true, 아니라면 false bool flip = fals..

3190번: 뱀

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 뱀의 각 좌표를 deque에 push한 뒤, 뱀의 머리가 향할 곳의 좌표를 c라고 하자. c가 위치한 곳이 벽 혹은 뱀의 몸통이므로 게임을 끝내고, 빈 칸 혹은 사과라면 deque의 front에 c를 push한다. 이 때 c가 위치한 곳이 빈 칸이라면 deque의 back을 pop해야 한다. 이 과정을 뱀이 길이 1이고 (1, 1)에서 시작할 때부터 게임이 끝날 때까지 반복하면 문제를 해결할 수 있다. ..

1021번: 회전하는 큐

https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 주어진 문제에서 2번 연산을 k번 하는 것은 3번 연산을 N - k번 하는 것과 같다. 또 2번 연산은 큐의 맨 앞 원소를 push한 뒤 큐에서 원소를 pop하는 것으로 볼 수 있기 때문에, 이 문제는 큐를 이용해서 간단하게 풀 수 있다. #include #include using namespace std; int min(int a, int b) { return a < b ? a : b; } ..