https://www.acmicpc.net/problem/2164
[필자 사고]
자료구조 문제이다. 그 중에서도 큐를 이용하면 쉽게 문제를 풀 수있다.
여기서 중요한 점은 카드를 버리는 시점에 큐의 사이즈이다.
카드를 버리는 시점에 큐의 사이즈가 1이 될 경우 게임을 중단하고 답을 출력하면 문제를 쉽게 해결 할 수 있다.
[소스 코드]
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
queue<int> pq;
int N;
void Input() {
cin >> N;
for (int i = 1; i <= N; i++) {
pq.push(i);
}
}
bool checkSize() {
if (pq.size() == 1)return true;
return false;
}
void GameStart() {
while (pq.size() != 1) {
pq.pop(); //첫 번째 수 버리기
if (checkSize())return;
int firstNum = pq.front();
pq.push(firstNum);
pq.pop();
if (checkSize())return;
}
}
int main(void) {
Input();
GameStart();
cout << pq.front();
}
'백준 > 자료구조' 카테고리의 다른 글
백준 17298 c++ "오큰수" -PlusUltraCode- (0) | 2024.08.17 |
---|