C++에서 STL로 Queue가 제공되기 때문에 쉽게 구현할 수 있습니다.
#include<iostream>
#include<queue>
using namespace std;
int main(void)
{
int n; cin >> n;
queue<int> q;
for (int i = 1; i <= n; i++) {
q.push(i);
}
int len = q.size();
while (len > 1) {
q.pop();
q.push(q.front());
q.pop();
len = q.size();
}
cout << q.front();
return 0;
}
n이 4면 마지막에 24가 남게 되는데 2가 pop 되고 4가 push 되어 44가 됩니다. 다시 4가 pop 되어 4가 남기 때문에 마지막 카드 부분을 예외처리해주는 로직을 만들지 않아도 됩니다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준/C,C++] 1966번: 프린터 큐 (0) | 2021.03.16 |
---|---|
[백준/C,C++] 11866번: 요세푸스 문제 0 (0) | 2021.03.15 |
[백준/C,C++] 18258번: 큐 2 (0) | 2021.03.15 |
[백준/C,C++] 13305번: 주유소 (0) | 2021.03.14 |
[백준/C,C++] 1541번: 잃어버린 괄호 (0) | 2021.03.14 |
댓글