Programing/백준, 프로그래머스(C++)

[C++][백준 2164] 카드2

hye3193 2025. 1. 7. 16:52

https://www.acmicpc.net/problem/2164

제출 코드

#include <iostream>
#include <queue>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n;
    cin >> n;
    queue<int> cards;
    for (int i = 1; i <= n; i++)
        cards.push(i);
    
    while (cards.size() > 2)
    {
        cards.pop();
        cards.push(cards.front());
        cards.pop();
    }
    cout << cards.back();
}

1부터 n까지의 수를 큐에 넣고, 문제에서 말한대로 그대로 구현하도록 코드를 작성하였다

남은 카드의 개수가 2장 이하가 되기 전까지 맨 위 카드를 버리고, 맨 위 카드를 맨 아래에 넣는 걸 반복하다가

while문을 탈출하고 맨 아래 카드를 출력한다(2장 남아있는 경우 맨 위 카드는 버려야 하기 때문에)