[백준 알고리즘]/[C++]
2346번 풍선 터뜨리기 | Baekjoon BOJ 백준 2346 C++ 코드, 해설, 풀이
말하는펭귄
2021. 1. 17. 12:17
728x90
반응형
이번 포스팅은 백준 2346번 풍선 터뜨리기입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
2346번: 풍선 터뜨리기
첫째 줄에 자연수 N(1≤N≤1,000)이 주어진다. 다음 줄에는 차례로 각 풍선 안의 종이에 적혀 있는 수가 주어진다. 편의상 0은 적혀있지 않다고 가정하자.
www.acmicpc.net
기본 알고리즘
vector의 삽입과 삭제
pair 사용
참고
line25
마지막 풍선을 터뜨린 후 더 이상 풍선 터뜨리기를 하지 않음 = main 함수 종료 (return 0)
line 27-32
오른쪽 이동 = 맨 앞 원소 삭제 후 맨 뒤에 삽입
line 33-38
왼쪽 이동 = 맨 뒤 원소 삭제 후 맨 앞에 삽입
line 34
abs(num)
int형 변수 num의 절대값 반환 함수
전체 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
//백준2346 풍선 터뜨리기
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<pair<int, int>> v;
for (int i = 1; i <= N; i++) {
int get;
cin >> get;
v.push_back(make_pair(i, get));
}
while (!v.empty()) {
cout << v.front().first << " ";
int num = v.front().second;
v.erase(v.begin());
if (v.empty()) return 0;
if (num > 0) {
for (int i = 0; i < num-1; i++) {
v.push_back(v.front());
v.erase(v.begin());
}
}
else {
for (int i = 0; i < abs(num); i++) {
v.insert(v.begin(), v.back());
v.erase(v.end()-1);
}
}
}
}
|
cs |

728x90
반응형