문제
https://www.acmicpc.net/problem/2346
2346번: 풍선 터뜨리기
1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선
www.acmicpc.net
풀이
순서값과 풍선값의 pair를 담고있는 deque를 이용하여 풀었다.
풍선값이 양수일때에는 맨처음 풍선은 이미 사라지고 없으므로 for 조건문에서 -1을, 음수일때에는 조건문에 abs를 씌우는것을 유의하자.
코드
#include <iostream>
#include<deque>
using namespace std;
int n;
int main() {
cin >> n;
deque<pair<int,int>> a(n);
for (int i = 1; i <= n; i++) {
a[i-1] = make_pair(i, i);
cin>>a[i-1].first;
}
while (a.size() != 0) {
int front = a.front().first;
cout << a.front().second << " ";
a.pop_front();
if (a.empty()) break;
if (front > 0) {
for (int i = 0; i < front-1; i++) {
a.push_back(a.front());
a.pop_front();
}
}
else {
for (int i = 0; i < abs(front); i++) {
a.push_front(a.back());
a.pop_back();
}
}
}
}
'Koala - 5기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[BOJ / Python] 4485번 : 녹색 옷 입은 애가 젤다지? (0) | 2022.02.17 |
---|---|
[BOJ / Python] 11286 - 절댓값 힙 (0) | 2022.02.14 |
BOJ 14713(python) : 앵무새 (0) | 2022.02.14 |
[BOJ/C++] 1931 - 회의실 배정 (0) | 2022.02.13 |
[BOJ / Swift & Python] 13975 - 파일 합치기 3 (0) | 2022.02.13 |