728x90
https://www.acmicpc.net/problem/2346
문제 풀이
덱에 숫자와 인덱스를 pair로 저장한다.
덱의 제일 첫 번째 값을 pop 하는데 숫자 따로 저장한다.
숫자가 양수라면 pop을 먼저하기 때문에 숫자-1 만큼 오른쪽으로 회전시킨다.
반대로 음수라면 숫자만큼 왼쪽으로 회전시키면 된다.
느낀 점
그렇게 어렵지 않은 덱 문제였다. 다르게 구현해볼까 하다가 그냥 빨리 풀었다.
코드
#include <iostream>
#include <utility>
#include <deque>
using namespace std;
int n;
deque<pair<int, int>> dq;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n;i++) {
int tmp;
cin >> tmp;
dq.push_back(make_pair(tmp, i+1));
}
while (true) {
int cnt = dq.front().first;
cout << dq.front().second << " ";
dq.pop_front();
if (dq.empty()) break;
if (cnt > 0) {
for (int i = 0; i < cnt - 1;i++) {
dq.push_back(dq.front());
dq.pop_front();
}
}
else {
for (int i = cnt; i < 0;i++) {
dq.push_front(dq.back());
dq.pop_back();
}
}
}
}
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[C++] 백준 2504번 : 괄호의 값 (0) | 2021.10.07 |
---|---|
[C++] 백준 11729번 : 하노이 탑 이동 순서 (0) | 2021.10.07 |
[C++] 백준 10799번 : 쇠막대기 (0) | 2021.10.04 |
[C++] 백준 1935번 : 후위 표기식2 (0) | 2021.09.28 |
[C++] 백준 1158번 : 요세푸스 문제 (0) | 2021.09.24 |
댓글