[백준] 2346- 풍선 터뜨리기 (JAVA)

leeng·2024년 6월 25일
0

이 문제는 처음에 Deque로 풀었다가 메모리 초과로 인해 int 배열로 변경해서 풀었다. 음수일 때 index 구하는 게 너무 어려웠다. 계속 OutOfIndex... 여차저차해서 풀었지만 저것보다 더 좋은 방법도 있을 것 같다. 하지만 토할 것 같아서 더 이상은 생각할 수가 없다. 나중에 다시 생각해봐야지.
(근데 다른 사람들 풀이 보니까 Deque로도 다들 통과한 건 안 비밀... 나중에 Deque로 다시 도전해야겠다)

import java.io.*;
import java.util.StringTokenizer;

// 2346 풍선 터뜨리기
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];
        StringTokenizer tokenizer = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(tokenizer.nextToken());
        }
        int popNext = 0;
        int popCount = 1;
        bw.write((popNext + 1) + " ");

        while (popCount < arr.length) {
            int popOrder = arr[popNext];
            arr[popNext] = 0;

            if (popOrder > 0) {
                for (int i = 0; i < popOrder; i++) {
                    int index = (i + 1 + popNext) % arr.length;

                    if (arr[index] == 0) {
                        popOrder++;
                    } else if (i == popOrder - 1) {
                        popNext = index;
                        popCount++;
                        bw.write((popNext + 1) + " ");
                    }
                }
            } else { // If the popOrder is negative
                for (int i = 0; i > popOrder; i--) {
                    int index = popNext + (i - 1) % arr.length < 0 ? arr.length + popNext + (i - 1) % arr.length : popNext + (i - 1) % arr.length;
                    if (arr[index] == 0) {
                        popOrder--;
                    } else if (i == popOrder + 1) {
                        popNext = index;
                        popCount++;
                        bw.write((popNext + 1) + " ");
                    }
                }
            }
        }

        br.close();

        bw.flush();
        bw.close();
    }
}
profile
기술블로그보다는 기록블로그

0개의 댓글