본문 바로가기
프로그래밍/알고리즘 풀이

백준 1149 RGB거리 자바

by 방구석개발자 2021. 7. 29.
반응형

1149 RGB거리 문제 보러가기

 

1149번: RGB거리

첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나

www.acmicpc.net

문제 설명

자바 코드

import java.util.*;

public class Main{
    public static void main(String[] args) throws Exception {
        Scanner scanner=new Scanner(System.in);
        int n = scanner.nextInt();
        int color[][]=new int[3][n+1];
        int result[][]=new int[3][n+1];

        for(int i=1;i<=n;i++){
            for(int j=0;j<3;j++){
                color[j][i]=scanner.nextInt();
            }
        }// 초기값 세팅

        result[0][0]=result[1][0]=result[2][0]=color[0][0]=color[1][0]=color[2][0]=0;
        for(int i=1;i<=n;i++){
            result[0][i]=Integer.min(result[1][i-1], result[2][i-1]) + color[0][i];
            result[1][i]=Integer.min(result[0][i-1], result[2][i-1]) + color[1][i];
            result[2][i]=Integer.min(result[0][i-1], result[1][i-1]) + color[2][i];
        }
        System.out.println(Integer.min(result[0][n],Integer.min(result[1][n],result[2][n])));
        scanner.close();
    }

}

문제 풀이

이 문제는 동적프로그래밍을 이용하여 풀었습니다. 결과값이 빨강 초록 파랑으로 각각 result[i][0] result[i][1] result[i][2]로 만들어서 빨강의 결과값 = 이전 초록, 파랑 결과값중 작은거 + 자기자신의 빨강으로 계속 결과값을 도출해내면 됩니다.

반응형

댓글