백준 단계별로 풀어보기 [큐, 덱] 카드2
https://www.acmicpc.net/problem/2164
[풀이]
카드가 한 장 남을 때까지 제일 위에 있는 카드를 pop하고, 그 후 제일 위에 있는 카드(front)를 맨 뒤에 push하는 과정을 반복한다.
[코드]
#include<iostream>
#include <queue>
int main() {
//n이 주어졌을 때 가장 마지막에 남게 되는 카드. 1~n까지의 카드가 놓여있고 제일 위에 있는 카드를 버린 후 위에 있는 카드를 아래로 옮김.
std::queue<int> q;
int n;
std::cin >> n;
for (int i = 1; i <= n; i++) {
q.push(i);
}
int r;
while (q.size() != 1) {
q.pop();
r = q.front();
q.pop();
q.push(r);
}
std::cout << q.front();
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[c++] 백준 2630 색종이 만들기 (0) | 2021.07.27 |
---|---|
[c++] 백준 11866 요세푸스 문제 0 (0) | 2021.07.27 |
[c++] 백준 11050, 11051 이항계수 1, 이항계수 2 (0) | 2021.07.27 |
[c++] 백준 1874 스택 수열 (0) | 2021.07.24 |
[c++] 백준 10773 제로 (0) | 2021.07.24 |