[BaekJoon] 1149 RGB ๊ฑฐ๋ฆฌ (Java)

SeongWon Ohยท2021๋…„ 10์›” 31์ผ
0
post-thumbnail

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

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


๐Ÿ“ ๋ฌธ์ œ ์„ค๋ช…

ํ•ด๋‹น ๋ฌธ์ œ๋Š” N๋ฒˆ์งธ ์ง‘์˜ ์ƒ‰์€ N-1๋ฒˆ์งธ ์ง‘๊ณผ N+1๋ฒˆ์งธ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฒน์น˜์ง€ ์•Š๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ์— ๊ฐ„๋‹จํ•œ Dynamic Programming์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œ ํ’€์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด N๋ฒˆ์งธ ์ง‘์€ N-1๋ฒˆ์งธ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฒน์น˜์ง€ ์•Š์œผ๋ฉด ๋˜๊ธฐ์— dp๋ฐฐ์—ด์—๋Š” ์ž์‹ ๊ณผ ๊ฐ™์€ ์ง‘์„ ์ œ์™ธํ•œ ์ด์ „๊นŒ์ง€ ์ง‘์„ ์น ํ•  ๋•Œ์˜ ์ตœ์†Œํ•œ์˜ ๋น„์šฉ+์ž๊ธฐ ์ž์‹ ์˜ ์ง‘์„ ์น ํ•  ๋•Œ์˜ ๋น„์šฉ์˜ ํ•ฉ์„ ๊ตฌํ•˜์—ฌ ๊ฐ๊ฐ์˜ dp๋ฐฐ์—ด์„ ์ฑ„์›Œ์ฃผ๋ฉด ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ํ’€์ด๋ฅผ ํ•˜๋ฉด ๋ฐฐ์—ด์˜ ๋์˜ RGB๊ฐ’๋“ค ์ค‘ ์ตœ์†Ÿ๊ฐ’์ด ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค.


๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ์ž‘์„ฑํ•œ ์ฝ”๋“œ

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

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		int[][] info = new int[N][3];
		int[][] dp = new int[N][3];
		
		for (int i=0; i<N; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			for (int j=0; j<3; j++) {
				info[i][j] = Integer.parseInt(st.nextToken());
			}
		}
		
		// ์ฒซ๋ฒˆ์จฐ ์ง‘์˜ ์ •๋ณด ์ถ”๊ฐ€
		for (int j=0; j<3; j++) dp[0][j] = info[0][j];
		
		// ๋‘๋ฒˆ์งธ ์ดํ›„์˜ ์ง‘ dp ๊ณ„์‚ฐ
		for (int i=1; i<N; i++) {
			dp[i][0] = Math.min(dp[i-1][1], dp[i-1][2]) + info[i][0];
			dp[i][1] = Math.min(dp[i-1][0], dp[i-1][2]) + info[i][1];
			dp[i][2] = Math.min(dp[i-1][0], dp[i-1][1]) + info[i][2];
		}
		
		// ๋ชจ๋“  ์ง‘์„ ์น ํ–ˆ์„ ๋•Œ ๊ฐ€์žฅ ์ ์€ ๋น„์šฉ ๊ตฌํ•˜๊ธฐ
		int min = Integer.MAX_VALUE;
		for (int i=0; i<3; i++) {
			if(dp[N-1][i] < min) min = dp[N-1][i];
		}
		
		System.out.println(min);
	}

}

profile
๋ธ”๋กœ๊ทธ ์ด์ „ํ–ˆ์Šต๋‹ˆ๋‹ค. -> https://seongwon.dev/

0๊ฐœ์˜ ๋Œ“๊ธ€