백준/DP

[백준 1149번 / C++] RGB거리

배발자 2022. 2. 17.
반응형

dp배열을 생성해서 풀면 된다. 

 

#접근방법 

1. 2차원 dp 배열 생성한다. 

2. 현재 dp값에 이전 dp 배열에서 다른 색을 가지고 있는 집들 중 작은 값을 선택해서 더해준다.

3. 최솟값 출력한다. 

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std; 
vector <vector<int>> v;
int n; 
int result = INT_MAX; 

int main() {
	ios::sync_with_stdio(false); 
	cin.tie(0); 
	cout.tie(0); 
	cin >> n;		
	vector <vector <int>>dp(n + 1, vector<int>(3, 0)); 
	for (int i = 1; i <= n; i++) {
		cin >> dp[i][0] >> dp[i][1] >> dp[i][2]; 
		dp[i][0] += min(dp[i - 1][1], dp[i - 1][2]); 
		dp[i][1] += min(dp[i - 1][0], dp[i - 1][2]); 
		dp[i][2] += min(dp[i - 1][0], dp[i - 1][1]); 
	}
	cout << min(dp[n][0], min(dp[n][1], dp[n][2])); 
}

 

 

1149번: RGB거리

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

www.acmicpc.net

반응형

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

[백준 1520번 / C++] 내리막 길  (0) 2022.02.24
[백준 5557번 / C++] 1학년  (0) 2022.02.22
[백준 12869번 / C++] 뮤탈리스크  (1) 2022.02.09
[백준 1450번 / C++] 냅색문제  (0) 2022.01.26
[백준 1103번 / C++] 게임  (0) 2022.01.17

댓글