문제 출처:https://www.acmicpc.net/problem/2164
이 문제는 queue를 통해서 구형했습니다. 제일 아래로 옮기는 카드는 pop으로 빠져나온 후 push로 넣어주고, 버리는 카드는 추가안해주면 됩니다. 코드는 다음과 같습니다:
#include <iostream>
#include <queue>
using namespace std ;
int main(){
ios::sync_with_stdio(false) ;
cin.tie(NULL) ; cout.tie(NULL) ;
queue<int> q ;
int N, num ;
cin >> N ;
for(int i = 1 ; i <= N ; i++)
q.push(i) ;
while(!q.empty() && 1 != q.size()){
q.pop() ;
num = q.front() ;
q.pop() ;
q.push(num) ;
}
cout << q.front() ;
return 0 ;
}
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/BackJoon/HPS/P2164_Card2.cpp
훈수 및 조언은 언제든 환영입니다.