RGB거리(1149)

i번째 집을 각각의 색으로 칠할 때, i-1번째 집을 모두 칠하는 최소 비용으로 부분문제

문제

RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.

집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.

  • 1번 집의 색은 2번 집의 색과 같지 않아야 한다.

  • N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.

  • i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.

시간 제한

0.5초

입력

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

출력

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

예제 입력

예제 출력

모든 경우의 수를 내려가면서 구해야하기 때문에 R,G,B모두 다 검색하면서 찾아봐야한다

풀이

백준

2번째 시도

이게보니까 굳이 새로운 배열을 만들어서 값을 넣을필요도없이 그냥 입력받은 배열에다가 새로운값으로 최신화시키면서 진행하는 방법도 있더라..!

배열을 하나 더 사용해서 그런가 조금은 메모리와 시간이 더 들었다

Last updated

Was this helpful?