컴굥일지
[BOJ/백준 2346][C++] 풍선 터뜨리기 본문
반응형
백준 2346 풍선 터뜨리기
문제 링크
https://www.acmicpc.net/problem/2346
문제 내용
N개의 풍선이 있고, 풍선 안의 수가 적혀있다. 풍선은 1번부터 터뜨리며, 터뜨린 풍선 안에 적혀있는 수만큼 이동하여 풍선을 또 터뜨린다. 단, 움직일 땐 터뜨린 풍선은 제외하고 생각한다.
문제 풀이
코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n; cin >> n;
vector <int>v(n);
for (int i = 0; i < n; i++) cin >> v[i];
int num;
int index = 0;
for (int i = 0; i < n; i++) {
cout << index+1<<' '; //풍선 번호 출력(풍선은 1번부터)
num = v[index]; //내용물 확인
v[index] = 0; //풍선 터트림 -- 0은 적혀있지 않다고 했기 때문
if (i == n - 1) { //마지막은 내용물을 확인하여 index 계산이 필요가 없다.
cout << '\n';
break;
}
if (num > 0) { //내용이 양수일 때
for (int j = 0; j < num; j++) {
index = (index + 1) % n; //범위를 넘어갔을 때 조정
if (v[index] == 0) j--;
}
}
else { //내용이 음수일 때
for (int j = 0; j < -num; j++) {
index = (index - 1);
if (index < 0) index += n; //범위를 넘어갔을 때 조정
if (v[index] == 0) j--;
}
}
}
return 0;
}
느낀점
인덱스를 유지하기 위해 vector가 아니라 그냥 배열을 써서 했다. 이 부분을 떠올리는게 조금 헷갈렸고, index 계산하는 것이 어려웠다.
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 2839][C++] 설탕 배달 (0) | 2022.01.04 |
---|---|
[BOJ/백준 1931][C++] 회의실 배정 (0) | 2022.01.03 |
[BOJ/백준 9093][C++] 단어 뒤집기 (0) | 2021.07.11 |
[BOJ/백준 2993][C++] 세 부분 (0) | 2021.07.11 |
[BOJ/백준 1008][C++] A/B (0) | 2021.07.11 |
Comments