algorithm/Stack, Queue, Deque
[C++] BOJ 2161 카드1
gartenhh
2021. 5. 21. 20:44
문제
백준 2161번 카드1
https://www.acmicpc.net/problem/2161
2161번: 카드1
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
코드
#include<iostream>
#include<deque>
using namespace std;
int n;
int main() {
cin >> n;
deque<int> d;
for (int i = n; i > 0; i--) d.push_front(i);
while (!d.empty()) {
cout << d.front()<<' ';
d.pop_front();
if (d.empty()) break;
d.push_back(d.front());
d.pop_front();
}
}
풀이방법
while문을 이용해 front를 출력해주고, pop한 뒤, 맨 뒤로 보내는 과정을 반복해준다.
고민과정
while문에서 첫번째 pop을 하고 d가 비워지는 경우를 고려하지 않아서 오류가 났었다. if문을 넣어서 해결했다.