Recent Posts
Notice
No Rules Rules
RGB거리 (feat. 백준, 1149번) 본문
728x90
반응형
RGB거리
https://www.acmicpc.net/problem/1149
// woohyeon.kim
// https://www.acmicpc.net/problem/1149
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false), cin.tie(), cout.tie();
register int N, arr[1001][3]; // 빨강, 초록, 파랑
cin >> N;
for (register int n = 1; n <= N; ++n)
cin >> arr[n][0] >> arr[n][1] >> arr[n][2];
for (register int n = 2; n <= N; ++n) {
// 현재 빨강은 이전 초록, 파랑집과 비교
arr[n][0] = min(arr[n - 1][1] + arr[n][0], arr[n - 1][2] + arr[n][0]);
// 현재 초록은 이전 빨강, 파랑집과 비교
arr[n][1] = min(arr[n - 1][0] + arr[n][1], arr[n - 1][2] + arr[n][1]);
// 현재 파랑은 이전 빨강, 초록집과 비교
arr[n][2] = min(arr[n - 1][0] + arr[n][2], arr[n - 1][1] + arr[n][2]);
}
cout << *min_element(arr[N], arr[N] + 3) << endl;
return 0;
}
// *&)*@*
- 첫번째 집은 reference로 두고, 두번째 집부터 봅니다.
- 두번째 집을 Ai라고 하고, 이전집을 Ai-1이라고 했을때, Ai{빨강} = min( Ai-1{초록} + Ai{빨강}, Ai-1{파랑} + Ai{빨강} ) 의 식으로 도출됩니다.
- 초록과 파랑 또한 마찬가지입니다.
- 따라서 가장 마지막인 N번째 집의 빨강, 초록, 파랑 중 가장 작은 값을 출력하면 완료됩니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
가장 긴 증가하는 부분 (feat. 백준, 11053번) (0) | 2022.07.28 |
---|---|
계단 오르기 (feat. 백준, 2579번) (0) | 2022.07.28 |
2xn 타일링 (feat. 백준, 11726번) (0) | 2022.07.28 |
1, 2, 3 더하기 (feat. 백준, 9095번) (0) | 2022.07.28 |
1로 만들기 (feat. 백준, 1463번) (0) | 2022.07.28 |
Comments