ํ•ด๋ฒ„๋‹ˆ 2023. 11. 17. 13:11
๋ฐ˜์‘ํ˜•

 

 

๋ฌธ์ œ

https://www.acmicpc.net/problem/2346

 

2346๋ฒˆ: ํ’์„  ํ„ฐ๋œจ๋ฆฌ๊ธฐ

1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ N๊ฐœ์˜ ํ’์„ ์ด ์›ํ˜•์œผ๋กœ ๋†“์—ฌ ์žˆ๊ณ . i๋ฒˆ ํ’์„ ์˜ ์˜ค๋ฅธ์ชฝ์—๋Š” i+1๋ฒˆ ํ’์„ ์ด ์žˆ๊ณ , ์™ผ์ชฝ์—๋Š” i-1๋ฒˆ ํ’์„ ์ด ์žˆ๋‹ค. ๋‹จ, 1๋ฒˆ ํ’์„ ์˜ ์™ผ์ชฝ์— N๋ฒˆ ํ’์„ ์ด ์žˆ๊ณ , N๋ฒˆ ํ’์„ ์˜ ์˜ค๋ฅธ์ชฝ์— 1๋ฒˆ ํ’์„ 

www.acmicpc.net

 

 

 

 

 

 

 

 

 

 

 

 

ํ’€์ด

์žฌ๋ฐŒ์—ˆ๋˜ ๋ฌธ์ œ

์ฒ˜์Œ์—” ArrayList๋กœ ํ•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ๋ฐฐ์—ด๋กœ ๋ฐ”๊ฟ”์„œ ํ’€์—ˆ๋‹ค.

index๊ฐ’์„ ์ฐธ์กฐํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—,,

 

package algorithm;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Balloon_2346 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // n ๋ฐฐ์—ด ํฌ๊ธฐ, ๋ฐฐ์—ด์€ ๊ฐ๊ฐ ๊ฐ’ ๋ฐ›๊ธฐ
        int n = Integer.parseInt(br.readLine());
        int[] list = new int[n];
        int[] answer = new int[n];
        int index = 0;
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            list[i] = Integer.parseInt(st.nextToken());
        }

        for (int i = 0; i < list.length - 1; i++) {
            int num = list[index]; // list[index] ๊ฐ’์„ num์œผ๋กœ ๊ฐ€์ ธ์™€ num ์ˆ˜๋งŒํผ ์ด๋™ํ•˜๊ธฐ
            list[index] = 0;
            answer[i] = index + 1;

            int k = 0;
            while (k < Math.abs(num)) { // 0์ด๋ผ๋ฉด ๊ฑด๋„ˆ ๋›ธ๊ฑฐ์ž„
                System.out.println("k :" + k);
                if (num > 0) { // num์ด ์–‘์ˆ˜๋ผ๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ
                    if (index + 1 >= list.length) { // index๊ฐ€ ๋ฐฐ์—ด ํฌ๊ธฐ๋ณด๋‹ค ์ปค์ง€๋ฉด ์ค„์—ฌ์ฃผ๊ธฐ
                        index -= list.length;
                    }

                    if (list[index + 1] != 0) { // ๊ฐ’์ด ์žˆ๋‹ค๋ฉด count
                        k++;
                        index++;
                    } else { // ๊ฐ’์ด 0์ด๋‹ˆ ๊ฑด๋„ˆ ๋›ฐ๊ธฐ
                        index++;
                    }
                } else { // num์ด ์Œ์ˆ˜๋ผ๋ฉด ์™ผ์ชฝ์œผ๋กœ

                    if (index - 1 < 0) {
                        index += list.length; // index๊ฐ€ 0๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋”ํ•ด์ฃผ๊ธฐ
                    }
                    if (list[index - 1] != 0) { // ๊ฐ’์ด ์žˆ๋‹ค๋ฉด count
                        k++;
                        index--;
                    } else { // ๊ฐ’์ด 0์ด๋‹ˆ ๊ฑด๋„ˆ ๋›ฐ๊ธฐ
                        index--;
                    }
                }
            }
        }
        answer[answer.length - 1] = index + 1; // ๋งˆ์ง€๋ง‰ ๋ฐฉ (ํ  do while๋ฅผ ์ผ์–ด์•ผ ํ–ˆ๋‚˜)

        for (int i = 0; i < answer.length; i++) { // ๋‹ต ์ถœ๋ ฅ
            System.out.print(answer[i] + " ");
        }
    }
}

 

 

 

 

 

 

 

 

 

 

์ •๋‹ต

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•