포스트

[백준][12873] 기념품

이 포스트는 백준 사이트의 기념품 문제 풀이입니다.

문제

문제


해결 과정

이 문제는 STL 컨테이너 중 하나인 Deque을 활용하면 쉽게 해결할 수 있습니다.

문제에서는 백준이가 움직이지만, Deque을 활용한 풀이에서는 백준이가 아닌
N명의 사람이 차례마다 백준이 앞에 오는 것으로 Deque의 양방향 연산(Push, Pop)을 활용하였습니다.

또한 매번 \(t^3\) 번 순차탐색을 진행하면 시간이 부족하므로
N으로 나눈 나머지를 활용하여 최단 짧은 거리로 연산하도록 하였습니다.

코드 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <deque>
#include <cmath>

using namespace std;

int main() {
	int N;
	cin >> N;
	deque<int> dq;	
	for(int i = 1; i <= N; ++i) {
		dq.push_back(i);
	}

	for(int t = 1; t < N; ++t) {
		long long idx = pow(t, 3) - 1;
		idx %= (N - t + 1);

		while(idx--) {
			dq.push_back(dq.front());
			dq.pop_front();
		}

		dq.pop_front();
	}

	cout << dq.front();
	return 0;
}


실행 결과

결과


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.