๋ฌธ์
RGB๊ฑฐ๋ฆฌ์๋ ์ง์ด N๊ฐ ์๋ค. ๊ฑฐ๋ฆฌ๋ ์ ๋ถ์ผ๋ก ๋ํ๋ผ ์ ์๊ณ , 1๋ฒ ์ง๋ถํฐ N๋ฒ ์ง์ด ์์๋๋ก ์๋ค.
์ง์ ๋นจ๊ฐ, ์ด๋ก, ํ๋ ์ค ํ๋์ ์์ผ๋ก ์น ํด์ผ ํ๋ค. ๊ฐ๊ฐ์ ์ง์ ๋นจ๊ฐ, ์ด๋ก, ํ๋์ผ๋ก ์น ํ๋ ๋น์ฉ์ด ์ฃผ์ด์ก์ ๋, ์๋ ๊ท์น์ ๋ง์กฑํ๋ฉด์ ๋ชจ๋ ์ง์ ์น ํ๋ ๋น์ฉ์ ์ต์๊ฐ์ ๊ตฌํด๋ณด์.
- 1๋ฒ ์ง์ ์์ 2๋ฒ ์ง์ ์๊ณผ ๊ฐ์ง ์์์ผ ํ๋ค.
- N๋ฒ ์ง์ ์์ N-1๋ฒ ์ง์ ์๊ณผ ๊ฐ์ง ์์์ผ ํ๋ค.
- i(2 ≤ i ≤ N-1)๋ฒ ์ง์ ์์ i-1๋ฒ, i+1๋ฒ ์ง์ ์๊ณผ ๊ฐ์ง ์์์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ง์ ์ N(2 ≤ N ≤ 1,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๊ฐ ์ง์ ๋นจ๊ฐ, ์ด๋ก, ํ๋์ผ๋ก ์น ํ๋ ๋น์ฉ์ด 1๋ฒ ์ง๋ถํฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ง์ ์น ํ๋ ๋น์ฉ์ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ชจ๋ ์ง์ ์น ํ๋ ๋น์ฉ์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
๋ฐฑ์ค ์ค๋ฒ 1ํฐ์ด / Dynamic Programming
๋ง์ง๋ง ์กฐ๊ฑด์ ์๋ชป ์ฝ์ด์ ํค๋งธ๋ ๋ฌธ์ ;;;; ๋ฐ๋ณธ๊ฐ
i-1๋ฒ์จฐ ์ง๊ณผ i+1๋ฒ์งธ ์ง์ ์์ด ๋ฌ๋ผ์ผ ํ๋ค๋ ๋ง์ ์๋๋ฐ ๋ฉ๋๋ก ๊ทธ๋ ๊ฒ ์๊ฐํด๋ฒ๋ ธ๋ค ใ ใ
๊ฒฐ๊ตญ ๋ญ๊ฐ ์ด์ํด์ ๋ฌธ์ ๋ฅผ ๋ค์ ์ฝ์ด๋ณด๊ณ ๊นจ๋ฌ์..
์ด๋ฐ ์์ผ๋ก ์ซ์ ๋ฆฌ์คํธ ์ญ ์ฃผ๊ณ ํฉ์ ์ต์๊ฐ/ ์ต๋๊ฐ ๊ตฌํ๋ DP๋ ์ด์ ์ต์ํด์ง ๊ฒ ๊ฐ๋ค!
๋ง์ด ํ์ด๋ด์ ๊ทธ๋ฐ๊ฐ ์ด์ ์ ์ณค๋ ์ฝํ ๋ค ์ค์์๋ dp๋ฌธ์ ๋ ๋ค ํด๊ฒฐํ์
๊ทธ๋๋ ์ฐ์ตํด์ผ์ง...
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
int cost[1001][3] = {0,{0,}};
cin >> n;
for (int i = 0; i < n; ++i){
cin >> cost[i][0] >> cost[i][1] >> cost[i][2];
}
for (int i = 0; i<n; ++i) {
cost[i + 1][0] += min(cost[i][1], cost[i][2]);
cost[i + 1][1] += min(cost[i][0], cost[i][2]);
cost[i + 1][2] += min(cost[i][1], cost[i][0]);
}
cout << *min_element(begin(cost[n]), end(cost[n]));
return 0;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/๋ฐฑ์ค] 11052 : ์นด๋ ๊ตฌ๋งคํ๊ธฐ (0) | 2023.02.21 |
---|---|
[C++/๋ฐฑ์ค] 1260 : DFS์ BFS (0) | 2023.02.21 |
[C++/๋ฐฑ์ค] 9095 : 1, 2, 3 ๋ํ๊ธฐ (0) | 2023.02.21 |
[C++/๋ฐฑ์ค] 1924 : 2007๋ (0) | 2023.02.21 |
[C++/๋ฐฑ์ค] 1026 : ๋ณด๋ฌผ (1) | 2023.01.16 |