풀이
- 각 풍선의 값을 덱에 값, 풍선 번호 쌍으로 저장한다. 이떄 풍선번호는 1~N까지 순서로 진행된다.
- 현재 풍선의 값을 cur에 저장하고, 해당 풍선의 번호를 출력한다.
- 현재 풍선은 이미 터진 것으로 처리하고, 덱에서 제거한다.
- cur이 양수인 경우: cur-1만큼 덱의 앞부분을 뒤로 옮긴다. cur-1번만큼 이동
- cur이 음수인 경우: -cur번만큼 덱의 뒷부분을 앞으로 옮긴다. cur번만큼 음수값으로 이동
- 풍선을 모두 터뜨린 후에는 풍선의 번호를 출력한다. 번호는 터뜨린 순서대로 출력된다.
코드
#include <iostream>
#include <deque>
using namespace std;
deque<pair<int, int>> dq;
int N;
int main(void) {
cin >> N;
int num;
for (int i = 0; i < N; i++) {
cin >> num;
dq.push_back(make_pair(num, i + 1));
}
while (!dq.empty()) {
int cur = dq.front().first;
cout << dq.front().second << " ";
dq.pop_front();
if (cur > 0) { // 양수인 경우
while (cur > 1) {
dq.push_back(dq.front());
dq.pop_front();
cur--;
}
} else { // 음수인 경우
cur = -cur;
while (cur > 0) {
dq.push_front(dq.back());
dq.pop_back();
cur--;
}
}
}
return 0;
}
https://www.acmicpc.net/problem/2346
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[C++] 백준 2606번: 바이러스 (0) | 2023.08.16 |
---|---|
[백준/python] 4949번 균형잡힌세상 (0) | 2023.08.14 |
[백준/python3] 15663번 : N과 M (9) (0) | 2023.08.13 |
[백준/Python] 3190번 : 뱀 (0) | 2023.08.13 |
[C++] 백준 12789번: 도키도키 간식드리미 (1) | 2023.08.13 |