알고리즘/코테 문제
[BOJ/백준 2164][C++] 카드2
gyong
2022. 4. 9. 03:23
반응형
문제
https://www.acmicpc.net/problem/2164
문제 내용
1~N까지의 카드가 있다. 1번이 제일 위에 있고, N이 제일 아래에 있다.
카드가 한 장 남을 때까지 두 가지 행위를 번갈아가며 진행한다.
1. 제일 위에 있는 카드를 버린다.
2. 제일 위에 있는 카드를 제일 밑으로 옮긴다.
문제 풀이
queue를 사용하여 문제를 풀면 된다.
queue에 1~N까지 차례로 추가하고 위에서 설명한 행위를 진행하면 된다.
코드
#include <iostream>
#include <queue>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
//입력
int n;
cin >> n;
queue<int> qq;
//문제 해결
for (int i = 1; i <= n; i++) qq.push(i);
int type = 0;
while (qq.size()!=1) { //1개 남으면 탈출
if (type%2==0) { //맨 위의 카드 버림
qq.pop();
}
else { //맨 위의 카드를 제일 아래로 옮김
qq.push(qq.front());
qq.pop();
}
type++;
}
//결과 출력
cout << qq.front() << '\n';
}
반응형