๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐ŸŽ› Others.../- ์‹ค์ „ ๋ฌธ์ œ ํ’€์ด : PS

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS(DP)] 1149๋ฒˆ RGB๊ฑฐ๋ฆฌ ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2020. 6. 25.

๋ฌธ์ œ

์ž…์ถœ๋ ฅ ์˜ˆ์ œ


์ ‘๊ทผ ๋ฐฉ๋ฒ•

์กฐ๊ฑด

๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋ด๋ณด์ž.

  • 1๋ฒˆ ์ง‘์˜ ์ƒ‰์€ 2๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
  • N๋ฒˆ ์ง‘์˜ ์ƒ‰์€ N-1๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
  • i(2 ≤ i ≤ N-1)๋ฒˆ ์ง‘์˜ ์ƒ‰์€ i-1๋ฒˆ, i+1๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

๊ฒฐ๊ตญ ์ด ๋ง์€ ์ง‘์˜ ์ƒ‰์ด ์ค‘๋ณต์ด ๋˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ทธ๋Ÿผ ์ง‘์˜ ์ƒ‰์ด ์ค‘๋ณต์ด ๋˜์ง€ ์•Š๊ฒŒ ๋†“๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋†“์•„ํ– ํ• ๊นŒ?๊ฐ€ ์ด ๋ฌธ์ œ์— ํ•ต์‹ฌ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์ตœ์ข… ๋ชฉ์ 

์šฐ๋ฆฌ๋Š” ์ด์ œ ์กฐ๊ฑด์— ๋Œ€ํ•ด์„œ ์•Œ์•˜์œผ๋‹ˆ๊นŒ ์ •๋‹ต์œผ๋กœ ๊ฐ€๊ธฐ์œ„ํ•œ ๋น„์šฉ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.


๊ฐ ์ง‘์—๋Š” ํŽ˜์ธํŠธ์˜ ๊ฐ€๊ฒฉ์ด ์žˆ๊ณ , ํ•ด๋‹น ๊ฐ€๊ฒฉ์˜ ์ตœ์†Œ๊ฐ€ ๋˜๋Š” ์ƒ‰๋งŒ ์น ํ•ด์„œ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š”๊ฒƒ์ด ์ด ๋ฌธ์ œ์˜ ์ตœ์ข… ๋ชฉ์ ์ด๋‹ค.


์ด์ œ DP์˜ ํŠน์„ฑ์ธ ํ˜„์žฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์Œ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

DP ๋ถ€๋ถ„ ํ•ด ์ฐพ๊ธฐ

์ง‘์ด ํ•˜๋‚˜ ์ผ ๋•Œ :: N = 1

๋งŒ์•ฝ ์ง‘์ด ํ•˜๋‚˜๋ผ๊ณ  ํ–ˆ์„ ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

26 (์ตœ์†Œ) 40 83

๊ทธ๋Ÿผ ๋‹น์—ฐํžˆ ๊ฐ€์žฅ ์ตœ์†Œ์ธ ๊ฐ’์„ ์„ ํƒํ•˜๋ฉด ๋์ด๋‹ค.

์ง‘์ด ๋‘˜ ์ผ ๋•Œ :: N = 2

26 40 83
49 60 (ํ›„๋ณด) 57 (ํ›„๋ณด)

์ด์ œ ์ง‘์ด ๋‘˜์ด๋ฉด ์กฐ๊ธˆ ์ƒ๊ฐ์„ ํ•ด๋ด์•ผ ํ•œ๋‹ค.

 

์ง‘์ด ๋‘˜์ด๋ผ๋ฉด ๊ทธ ์ „ ๊ฒฐ๊ณผ(์ง‘์ด ํ•˜๋‚˜์ผ ๋•Œ)์—์„œ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ์ง‘๋“ค(2๋ฒˆ, 3๋ฒˆ)์ค‘ ์ตœ์†Ÿ ๊ฐ’์„ ์ฐพ์œผ๋ฉด ๋˜์ง€ ์•Š์„๊นŒ?

 

๊ทธ๋Ÿผ Math.min(color[1], color[2]) ์ด๋ ‡๊ฒŒ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๋‹ค.

 

์—ญ์‹œ ์ง‘์ด ์ฆ๊ฐ€ํ•ด์„œ i๋ฒˆ์งธ ๊นŒ์ง€ ๊ฐ„๋‹ค๊ณ  ํ•ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ผ ๊ฒƒ์ด๋‹ค.

 

์ด์ œ ๋ถ€๋ถ„ ํ•ด๋ฅผ ์ฐพ์•˜์œผ๋ฏ€๋กœ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•ด๋ณด์ž.

์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ

์œ„์˜ ํ‘œ๋ฅผ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ์ด์ฐจ์› ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋‹ค.


๊ทธ๋ฆฌ๊ณ  ์ž…๋ ฅ๋œ ๊ฐ’ ๋ฐฐ์—ด๊ณผ i๋ฒˆ์งธ์˜ ๋ถ€๋ถ„ ํ•ด์˜ ๋ฐฐ์—ด์„ ๋”ฐ๋กœ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด์„œ ๋‘ ๊ฐœ์˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

package algorithm.class11_dynamic_programming;

import java.io.*;

public class Prob03_RGB {
    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+1][3]; // ์ž…๋ ฅ ๋ฐฐ์—ด
        int[][] dp = new int[n+1][3]; // ๊ณ„์‚ฐ ๊ฒฐ๊ณผ ๋ฐฐ์—ด

        for (int i = 1; i < n + 1; i++) {
            String input = br.readLine();
            String[] str = input.split(" ");
            for (int j = 0; j < 3; j++) {
                arr[i][j] = Integer.parseInt(str[j]);
            }
        }

        dp[0][0] = dp[0][1] = dp[0][2] = arr[0][0] = arr[0][1] = arr[0][2] = 0;

        for (int i = 1; i < n + 1; i++) {
            dp[i][0] = Math.min(dp[i-1][1], dp[i-1][2]) + arr[i][0]; // red ์ผ ๋•Œ : green๊ณผ blue์ค‘ ์ตœ์†Œ ๋น„์šฉ์— ํ˜„์žฌ red ๋น„์šฉ์„ ๋”ํ•œ๋‹ค.
            dp[i][1] = Math.min(dp[i-1][0], dp[i-1][2]) + arr[i][1]; // green ์ผ ๋–„ : red์™€ blue์ค‘ ์ตœ์†Œ ๋น„์šฉ
            dp[i][2] = Math.min(dp[i-1][0], dp[i-1][1]) + arr[i][2]; // blue ์ผ ๋•Œ : red์™€ green์˜ ์ตœ์†Œ ๋น„์šฉ
        }

        bw.write(Math.min(Math.min(dp[n][0], dp[n][1]), dp[n][2])+""); // ๋ถ€๋ถ„ ํ•ด์˜ ๊ฒฐ๊ณผ RGB์ค‘ ์ตœ์†Œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

        bw.flush();
        bw.close();
    }
}

๋Œ“๊ธ€