승코딩당당당

[C++] 백준 2164: 카드2 본문

PS/BOJ

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

승코딩당당당 2025. 12. 26. 12:06

문제

[C++] 백준 2164: 카드2 SILVER 4
https://www.acmicpc.net/problem/2164

 


 

접근 방법

이 문제는 카드가 놓인 상태에서 맨 위 카드를 버리고, 그 다음 카드를 맨 아래로 옮기는 과정을 반복하여
마지막에 남는 카드의 번호를 구하는 문제이다.

이러한 동작은 선입선출(FIFO) 구조와 정확히 일치하므로 queue 자료구조를 사용하면 문제를 직관적으로 해결할 수 있다.

  • 카드는 항상 앞에서 제거(pop) 되고
  • 일부 카드는 뒤로 추가(push) 된다

 


 

코드

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

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

    int n = 0;
    cin >> n;

    queue<int> Q;

    for (int i = 1; i <= n; i++)
        Q.push(i);

    while (Q.size() > 1)
    {
        Q.pop();

        int t = Q.front();

        Q.pop();

        Q.push(t);
    }
    cout << Q.front();
}

'PS > BOJ' 카테고리의 다른 글

[C++] 백준 5073: 삼각형과 세 변  (0) 2025.12.28
[C++] 백준 23971: ZOAC 4  (2) 2025.12.28
[C++] 백준 1253: 좋다  (1) 2025.12.26
[C++] 백준 1260: DFS와 BFS  (0) 2025.12.26
[C++] 백준 2644: 촌수계산  (2) 2025.12.24