본문 바로가기
알고리즘/백준

백준 1149 RGB거리 (자바)

by 김어찐 2021. 9. 14.
728x90
import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;


class Main
{
	static int[][] dp;
	
	public static void main(String args[]) throws Exception
	{
		
		System.setIn(new FileInputStream("input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int answer= Integer.MAX_VALUE;
		st = new StringTokenizer(br.readLine());
		int N =Integer.parseInt(st.nextToken());
		dp=new int[N+1][3];
		for (int i = 1; i <= N; i++) {
			st = new StringTokenizer(br.readLine());
			int idx0 = findMinValue(i-1,0);
			int idx1 = findMinValue(i-1,1);
			int idx2 = findMinValue(i-1,2);
			dp[i][0]=Integer.parseInt(st.nextToken())+idx0;
			dp[i][1]=Integer.parseInt(st.nextToken())+idx1;
			dp[i][2]=Integer.parseInt(st.nextToken())+idx2;
			
		}
		for (int i = 0; i < 3; i++) {
			answer = Math.min(answer, dp[N][i]);
		}
		System.out.println(answer);
	}

	private static int findMinValue(int row, int idx) {
		int minValue = Integer.MAX_VALUE;
		for (int i = 0; i < 3; i++) {
			if(i==idx) continue;
			minValue = Math.min(dp[row][i], minValue);
		}
		return minValue;
		
	}
	
}
728x90