상황파악

백준 - 1149 RGB 거리 본문

백준

백준 - 1149 RGB 거리

otch80 2021. 1. 12. 18:53

 

주의해야할 점은 직전에 사용한 색과 연속되어서는 안된다는 점이다

따라서 직전에 사용된 색을 제외한 나머지 경우를 계산하면서 진행한다

 

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int count, r, g, b;
    int v[3][1001];
    
    cin >> count;

    v[0][0]=0;
    v[0][1]=0;
    v[0][2]=0;
    
    for (int i=1;i<=count;i++){
        cin >> r >> g >> b;
        v[0][i] = min(v[1][i-1],v[2][i-1]) + r;
        v[1][i] = min(v[0][i-1],v[2][i-1]) + g;
        v[2][i] = min(v[0][i-1],v[1][i-1]) + b;
    }
    
    cout << min(v[0][count],min(v[1][count],v[2][count]));
    
    return 0;
}

 

내가 작성한 코드를 그림으로 표현하면 다음과 같다

 

인덱스가 1부터 시작되는 이유는 편의를 위해서다

1번째 인덱스는 0에서 값을 가져와 계산하는데, 인덱스 0에는 0이 들어있기 때문에 그림에서는 표현하지 않았다

 

입력을 받음과 동시에 연속되는 색상을 제외한 경우 중 작은 수를 선택하여 누적값을 계산하는 과정을 반복한다

계산하여 마지막엔 최종 값이 가장 작은 값을 출력한다

 

 

 

'백준' 카테고리의 다른 글

백준 2839번: 설탕 배달  (0) 2021.01.11
백준 1032: 명령 프롬프트  (0) 2021.01.04