Algorithm/Baekjoon

[Algorithm/Baekjoon] ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡ - 20055 (G5/JAVA)

dpdms2148 2023. 6. 13. 22:30
728x90

๐Ÿ“‘๋ฌธ์ œ๋งํฌ

20055๋ฒˆ: ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡

๐Ÿ’ป์ฝ”๋“œ

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));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        int[] belt = new int[N * 2];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N * 2; i++) {
            belt[i] = Integer.parseInt(st.nextToken());
        }

        int step = 0;
        boolean[] robot = new boolean[N];
        while (true) {
            // 4. ๋‚ด๊ตฌ๋„๊ฐ€ 0์ธ ์นธ์˜ ๊ฐœ์ˆ˜๊ฐ€ K๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด ๊ณผ์ •์„ ์ข…๋ฃŒํ•œ๋‹ค.
            int zeroCount = 0;
            for (int i = 0; i < 2 * N; i++) {
                if (belt[i] == 0) zeroCount++;
            }
            if (zeroCount >= K) break;

            // 1. ๋ฒจํŠธ๊ฐ€ ๊ฐ ์นธ ์œ„์— ์žˆ๋Š” ๋กœ๋ด‡๊ณผ ํ•จ๊ป˜ ํ•œ ์นธ ํšŒ์ „ํ•œ๋‹ค.
            // 1-1. ๋ฒจํŠธ ํšŒ์ „
            int temp = belt[N * 2 - 1];
            for (int i = N * 2 - 1; i > 0; i--) {
                belt[i] = belt[i - 1];
            }
            belt[0] = temp;
            // 1-2. ๋กœ๋ด‡ ํšŒ์ „
            for (int i = N - 1; i > 0; i--) {
                robot[i] = robot[i - 1];
            }
            robot[0] = false; // ์˜ฌ๋ฆฌ๋Š” ์œ„์น˜
            robot[N - 1] = false; //๋‚ด๋ฆฌ๋Š” ์œ„์น˜

            //2. ๊ฐ€์žฅ ๋จผ์ € ๋ฒจํŠธ์— ์˜ฌ๋ผ๊ฐ„ ๋กœ๋ด‡๋ถ€ํ„ฐ, ๋ฒจํŠธ๊ฐ€ ํšŒ์ „ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ•œ ์นธ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๋™ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๊ฐ€๋งŒํžˆ ์žˆ๋Š”๋‹ค.
            for (int i = N - 1; i > 0; i--) {
                // ๋กœ๋ด‡์ด ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋™ํ•˜๋ ค๋Š” ์นธ์— ๋กœ๋ด‡์ด ์—†์œผ๋ฉฐ, ๊ทธ ์นธ์˜ ๋‚ด๊ตฌ๋„๊ฐ€ 1 ์ด์ƒ ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
                if (robot[i - 1] && !robot[i] && belt[i] > 0) {
                    belt[i]--;
                    robot[i] = true;
                    robot[i - 1] = false;
                }
            }

            // 3. ์˜ฌ๋ฆฌ๋Š” ์œ„์น˜์— ์žˆ๋Š” ์นธ์˜ ๋‚ด๊ตฌ๋„๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด ์˜ฌ๋ฆฌ๋Š” ์œ„์น˜์— ๋กœ๋ด‡์„ ์˜ฌ๋ฆฐ๋‹ค.
            if (belt[0] > 0) {
                belt[0]--;
                robot[0] = true;
            }

            step++;
        }

        System.out.println(step);
    }
}

โณํšŒ๊ณ 

  • ๋ฌธ์ œ ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ๋ฐ˜๋ณตํ•ด์„œ ์ฝ์—ˆ๋‹ค.
  • 1๋ฒˆ ๋‹จ๊ณ„์—์„œ ๋ฒจํŠธ๋งŒ ํšŒ์ „์„ ํ–ˆ๋Š”๋ฐ ๋กœ๋ด‡๋„ ํ•จ๊ป˜ ํšŒ์ „์„ ํ•ด์•ผํ•œ๋‹ค.
728x90