스터디/알고리즘

[백준 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의 상단 원소를 삭제하고 삭제하고 난 다음의 상위 원소를 하단에 삽입, 해당 원소는 삭제를 반복한다