티스토리 뷰

시간 제한메모리 제한제출정답맞은 사람정답 비율
0.5 초 (언어별 추가 시간 없음)128 MB2588711378853046.123%

문제

RGB거리에 사는 사람들은 집을 빨강, 초록, 파랑중에 하나로 칠하려고 한다. 또한, 그들은 모든 이웃은 같은 색으로 칠할 수 없다는 규칙도 정했다. 집 i의 이웃은 집 i-1과 집 i+1이다. 처음 집과 마지막 집은 이웃이 아니다.

각 집을 빨강으로 칠할 때 드는 비용, 초록으로 칠할 때 드는 비용, 파랑으로 드는 비용이 주어질 때, 모든 집을 칠할 때 드는 비용의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 집의 수 N이 주어진다. N은 1,000보다 작거나 같다. 둘째 줄부터 N개의 줄에 각 집을 빨강으로 칠할 때, 초록으로 칠할 때, 파랑으로 칠할 때 드는 비용이 주어진다. 비용은 1,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 모든 집을 칠할 때 드는 비용의 최솟값을 출력한다.

예제 입력 1 

3
26 40 83
49 60 57
13 89 99

예제 출력 1 

96

출처

  • 문제를 번역한 사람: baekjoon
  • 빠진 조건을 찾은 사람: djm03178
  • 데이터를 추가한 사람: rdd6584

//RGB거리

import java.util.*;

public class Main {

public static ArrayList<Integer> box = new ArrayList<>();

//첫째 줄에 괄호 문자열이 한 줄에 주어진다. 하나의 괄호 문자열의 길이는 2 이상 50 이하이다.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//총 몇개의 숫자를 입력 받을 것인지
int a;
int[][] b;
int c;
int d = 0;
int e = 0;
Stack<String> stack = new Stack<>();

a = sc.nextInt();


b = new int[a + 1][3];

for (int i = 1; i <= a; i++) {
c = sc.nextInt();
d = sc.nextInt();
e = sc.nextInt();

b[i][0] = c;
b[i][1] = d;
b[i][2] = e;
}

for (int i = 1; i <= a; i++) {
for (int j = 0; j < 3; j++) {
b[i][j] += Math.min(b[i - 1][(j + 1) % 3], b[i - 1][(j + 2) % 3]);
}
}

sc.close();

System.out.println(Math.min(b[a][0], Math.min(b[a][1], b[a][2])));


}
}




'알고리즘 문제 풀이 ' 카테고리의 다른 글

백준 2293번 / 동전 1  (0) 2018.11.05
백준 10844번 / 쉬운 계단 수  (0) 2018.11.05
백준 1463번 / 1로 만들기  (0) 2018.11.05
백준 / 정수 삼각형  (0) 2018.11.01
버튼 누르기  (1) 2018.10.27
특정 최단거리  (0) 2018.10.24
파티  (0) 2018.10.24
최단거리  (0) 2018.10.22
댓글