반응형
문제 설명
자바 코드
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]로 만들어서 빨강의 결과값 = 이전 초록, 파랑 결과값중 작은거 + 자기자신의 빨강으로 계속 결과값을 도출해내면 됩니다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
프로그래머스 상호 평가 자바 (0) | 2021.08.10 |
---|---|
백준 7576 토마토 자바 (0) | 2021.08.04 |
백준 1932 정수 삼각형 자바 (0) | 2021.07.14 |
백준 2579 계단 오르기 자바 (0) | 2021.07.14 |
백준 1463 1로 만들기 자바 (0) | 2021.07.13 |
댓글