https://www.acmicpc.net/problem/12873
12873번: 기념품
백준이는 BOJ 알고리즘 캠프 참가자 중 한 명에게 기념품을 주려고 한다. 하지만, 많은 참가자 중에서 어떤 사람을 뽑아서 기념품을 줘야하는지 고민이 되기 시작했다. 따라서, 백준이는 게임을
www.acmicpc.net
솔루션
나는 deque를 이용해 접근을하였다.
1) 먼저 dequ에 1~N 까지 넣어준다. (push_back())
2) t=1 턴 부터 시작해서 N-1턴 까지 반복하면서 아래의 과정을 반복한다.
2-1) t^3을 구한다.
2-2) 해당 값을 (N명 - t턴) 값으로 나눠준다.
2-3) 나머지 만큼 dq.push_back(dq.front()), dq.pop_front() 를 해준다.
3) dq에 남은 마지막 한개를 출력한다.
코드
#define ll long long int
#include <iostream>
#include <cmath>
#include <deque>
using namespace std;
int N;
deque<int> dq;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> N;
for (int i = 1; i <= N; i++) {
dq.push_back(i);
}
for (int i = 1; i <= N - 1; i++) {
ll p = pow(i, 3);
p--;
p %= (N - i + 1);
while (p--) {
dq.push_back(dq.front());
dq.pop_front();
}
dq.pop_front();
}
cout << dq.front() << "\n";
}
'백준' 카테고리의 다른 글
C++[백준]3653번 영화 수집 (0) | 2023.04.19 |
---|---|
C++[백준]3006번 터보소트 (0) | 2023.04.18 |
C++[백준]14939번 불 끄기 (3) | 2023.04.14 |
C++[백준]9527번 1의 개수 세기 (2) | 2023.04.13 |
C++[백준]16724번 피리부는 사나이 (0) | 2023.04.13 |