파게로그
[백준 2346번] 풍선 터뜨리기 본문
문제 링크: 2346번 제목
https://www.acmicpc.net/problem/2346
풍선에 적힌 값을 나열한, 크기가 n인 배열 balloons를 선언한다.
i가 n-1인 이유: 처음에 첫 풍선을 처리했기 때문
j의 의미: 풍선에 쓰인 숫자(num)만큼 cur을 옮기는데, 터진 풍선은 실제로는 이동하지 않은 것이기에 j를 통해서 실제 이동한 횟수를 세어준다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(new StringTokenizer(br.readLine()).nextToken());
int[] balloons = new int[n];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++)
balloons[i] = Integer.parseInt(st.nextToken());
StringBuilder answer = new StringBuilder();
answer.append(1).append(' ');
int cur = 0;
int num = balloons[0];
balloons[0] = 0; // 터진 풍선
for (int i = 0; i < n-1; i++) {
if (num >= 0) {
for (int j = 0; j < num;) {
cur++;
cur %= n;
if (balloons[cur] != 0)
j++;
}
} else {
for (int j = 0; j < num * -1;) {
cur--;
while (cur < 0)
cur += n;
if (balloons[cur] != 0)
j++;
}
}
num = balloons[cur];
balloons[cur] = 0;
answer.append(cur+1).append(' ');
}
System.out.print(answer);
}
}
'콤퓨타 왕왕기초 > PS' 카테고리의 다른 글
[백준 1406번] 에디터 (0) | 2021.04.13 |
---|---|
[백준 20206번] 푸앙이가 길을 건너간 이유 (0) | 2021.04.13 |
[백준 2840번] 행운의 바퀴 (0) | 2021.04.13 |
[백준 17413번] 단어 뒤집기 2 (0) | 2021.04.08 |
[백준 12015번] LIS(최장 증가 부분 수열) 이분탐색 (0) | 2021.04.07 |
Comments