백준

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

홍시뗄레 2025. 2. 26. 22:12

#include <iostream>
#include <deque>

using namespace std;

int card(int n) {
   deque<int> card;
   //순서대로 입력
   for (int i=1;i <= n;i++) {
      card.push_back(i);
   }
   //카드가 2개 이상일 때
   while (card.size() > 1) {
      card.pop_front();
      int front = card.front();
      card.pop_front();
      card.push_back(front);
   }
   return card.front();
}

int main() {
   int n;
   cin >> n;
   int result = card(n);
   cout << result;
   return 0;
}

double ended queue를 쓰면 된다. 쉽게 풀기 완료! 

첫번째 카드를 pop해서 없애면, 앞에 있는 카드를 뒤로 보낼 수 있다. 이렇게 계속해서 반복.