IDEA
그냥 POP과 PUSH를 카드 1장만 남을 때까지 반복하면 되는 문제다.
아래 두가지만 반복하면 된다.
제일 위에 있는 카드를 바닥에 버린다. -> pop한다
제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. -> front를 따로 저장해 둔 후 pop한다. 저장해둔 값을 push한다.
#include<iostream>
#include<queue>
using namespace std;
int main() {
int n;
scanf("%d", &n);
queue<int>q;
for (int i = 0; i < n; i++) q.push(i+1);
while (q.size() > 1) {
//1번
q.pop();
if (q.size() == 1) break;
//2번
int num = q.front();
q.pop();
q.push(num);
}
printf("%d", q.front());
}
'알고리즘 > 백준 단계별로 풀기 (12.26 ~ 12.31)' 카테고리의 다른 글
큐 - 백준 1966번 프린터 큐 (0) | 2020.12.27 |
---|---|
큐 - 백준 1186번 요세푸스 문제0 (0) | 2020.12.27 |
스택 - 백준 4949번 균형잡힌 세상 (0) | 2020.12.27 |
브루트포스 - 백준 7568번 덩치 (0) | 2020.12.26 |
브루트포스 - 백준 2798번 블랙잭 (0) | 2020.12.26 |