백준 1149번 RGB거리 문제풀이(C++)

YooHeeJoon·2022년 9월 28일
0

백준 문제풀이

목록 보기
17/56

백준 1149번 RGB거리

아이디어

조건

  • 1번 집의 색은 2번 집의 색과 같지 않아야 한다.
  • N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.
  • i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.
  • i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.
    이 조건을 보면
    [i][1] = min([i - 1][2], [i - 1][3])
    [i][2] = min([i - 1][1], [i - 1][3])
    [i][3] = min([i - 1][1], [i - 1][2])
    이 규칙을 따른 다는 것을 알 수 있다

    문제풀이

    #include<bits/stdc++.h>
    using namespace std;
    int arr[1001][4], n;
    int main() {
    	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    	cin >> n;
    	for (int i = 0; i < n; i++)
    		for (int j = 0; j < 3; j++)
    			cin >> arr[i][j];
    	for (int i = 0; i < n - 1; i++) {
    		arr[i + 1][0] += min(arr[i][1], arr[i][2]);
    		arr[i + 1][1] += min(arr[i][0], arr[i][2]);
    		arr[i + 1][2] += min(arr[i][1], arr[i][0]);
    	}
    	int min_num = min({arr[n - 1][0], arr[n - 1][1], arr[n - 1][2]});
    	cout << min_num << '\n';
    }

    0개의 댓글