본문 바로가기
Algorithm

(BOJ) 2164 풀이

by snwo 2022. 1. 30.
#include<bits/stdc++.h>
using namespace std;
queue<int> q;

int main(void){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    for(int i=1;i<=N;i++){
        q.push(i);
    }
    N-=1;
    while(N--){
        q.pop();
        // cout << q.front() << endl;
        q.push(q.front());
        q.pop();
    }
    cout << q.front();
}

카드를 위에서 1부터 N 까지 쌓고,

맨 위에있는 카드를 버리고 그 다음 카드를 맨 아래를 보내는 것을 N-1 번 반복한다.

큐를 이용해 그대로 구현해주면 된다.