ใ ๋ฌธ์ :
๋ถ์ :
rgb ์๊น์ ์ ์ ์ง๋ง๋ค ๊ฒน์น์ง ์๊ฒ ์์น ํ๋๋ฐ ๊ทธ ์ต์ ๋น์ฉ์ ๊ตฌํ๋ ๋ฌธ์ ๋ค.
dp ๋ฐฐ์ด์ 2์ฐจ์ ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ dp[i][0], dp[i][1], dp[i][2]๋ ๊ฐ๊ฐ i๋ฒ์งธ ์ง๊น์ง ์์น ํ ๋ 0-๋นจ๊ฐ์ ์ต์ ๋น์ฉ,1-๋ ธ๋์ ์ต์ ๋น์ฉ,2-ํ๋์ ์ต์ ๋น์ฉ์ ์ ์ฅํ๊ณ ์๋ ๋ฐฐ์ด์ด๋ค.
์๋ฅผ ๋ค์ด dp[1][1]์ ์ด์ 0๋ฒ์งธ ์ง์ ์์น ํ ๋ ๋๋ ์ต์ ๋น์ฉ์ ์ง๊ธ ์์ ์ 1๋ฒ์งธ ์ง์ ๋ ธ๋์์ผ๋ก ์์น ํ๋ ๊ฒ๊น์ง ๊ณ์ฐ๋ ๋น์ฉ์ ์๋ฏธํ๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ dp์ ๋ง์ง๋ง ์ค(N)์ ์ต์๊ฐ์ ๊ตฌํ๋ฉด 1 ~ N๊น์ง ์์น ํ๋๋ฐ ๋๋ ์ต์ ๋น์ฉ์ ๊ตฌํ ์ ์๋ค.
c++ ์ฝ๋ :
//
// 1149_rgb.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/04/23.
//
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;
int arr[1001][3]; // rgb3
int dp[1001][3];
int N;
void make_rgb_paint(){
dp[0][0] = arr[0][0];
dp[0][1] = arr[0][1];
dp[0][2] = arr[0][2];
for(int i = 1; i < N; i++){
dp[i][0] = min(dp[i-1][1], dp[i-1][2]) + arr[i][0];
dp[i][1] = min(dp[i-1][0], dp[i-1][2]) + arr[i][1];
dp[i][2] = min(dp[i-1][0], dp[i-1][1]) + arr[i][2];
}
int ans = min(min(dp[N-1][0],dp[N-1][1]),dp[N-1][2]);
cout << ans << '\n';
}
int main(){
cin >> N;
for(int i = 0; i < N; i++){
for(int j = 0; j< 3; j++){
cin >> arr[i][j];
}
}
make_rgb_paint();
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 5567 ๊ฒฐํผ์ ๊ตฌํ (0) | 2021.06.13 |
---|---|
[๋ฐฑ์ค] 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ DP (0) | 2021.06.13 |
[๋ฐฑ์ค] 16236 ์๊ธฐ ์์ด DFS, Priority-Queue (0) | 2021.05.06 |
[๋ฐฑ์ค] 9095 1,2,3 ๋ํ๊ธฐ DP (0) | 2021.05.04 |
[๋ฐฑ์ค] 1937 ์์ฌ์์ด ํ๋ค ๐ผ DP (0) | 2021.05.02 |
๋๊ธ