스터디/알고리즘
[백준 2164] 카드2
덩이
2022. 1. 10. 22:32
#include <iostream>
#include <queue>
using namespace std;
int main(){
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;
}
문제 조건을 살펴보면 상단에는 삭제 작업을 하단에는 삽입 작업이 이루어지므로 큐를 사용(스택은 한 쪽(top)에서 삽입, 삭제가 이루어짐)
q의 사이즈가 1이 될 때까지 (마지막 카드 번호) q의 상단 원소를 삭제하고 삭제하고 난 다음의 상위 원소를 하단에 삽입, 해당 원소는 삭제를 반복한다