컴굥일지
[BOJ/백준 2164][C++] 카드2 본문
반응형
문제
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';
}
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 2930][C++] 가위 바위 보 (0) | 2022.04.15 |
---|---|
[BOJ/백준 1181][C++] 단어 정렬 (0) | 2022.04.10 |
[BOJ/백준 10828][C++] 스택 (0) | 2022.04.08 |
[BOJ/백준 14606][C++] 피자 (Small) (0) | 2022.04.03 |
[BOJ/백준 9658][C++] 돌 게임 4 (0) | 2022.04.02 |
Comments