알고리즘
[C++] 백준 2164번 카드2
J3SUNG
2019. 9. 4. 12:13
728x90
큐 문제입니다.
1. 1~n까지의 수를 큐에 넣습니다.
2. q.pop(), 먼저 들어온 것을 제거합니다.
3. q.push(q.front()), 앞에 있는 것을 뒤에 넣습니다.
4. q.pop(), 앞에 있는 것을 제거합니다.(뒤로 옮긴 상태)
5. q.size()가 1이 될때까지 2~4 반복
6. q.front() 출력
#include <iostream>
#include <cstring>
#include <queue>
#include <string>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
int n;
queue<int> q;
cin >> n;
for (int i = 1; i <= n; ++i) {
q.push(i);
}
while (q.size() > 1) {
q.pop();
q.push(q.front());
q.pop();
}
cout << q.front() << endl;
return 0;
}