๐ค๋ฌธ์ ์ดํด
1149๋ฒ RGB๊ฑฐ๋ฆฌ ๋ฌธ์ ์ ๋ณํ์ด๋ค.
์ด ๋ฌธ์ ์์ ์ฒซ๋ฒ์งธ ์ ํํ ์ง์ ์๊ณผ ๋ง์ง๋ง์ ์ ํํ ์ง์ ์์ด ๋ฌ๋ผ์ผ ํ๋ค.
๐ก์ฒซ๋ฒ์งธ ์์ด๋์ด
์ฒ์ ์ ํํ ์์ ๋ฐ๋ผ dp ๋ฐฐ์ด์ด ๋ค๋ฅด๊ฒ ์ค์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ dp0, dp1, dp2 ๋ฐฐ์ด์ ๊ฐ๊ฐ ์ ์ธํด์ ๊ตฌํํ์์ง๋ง ์ ๋๋ฌธ์ธ์ง 4%์์ ์๊พธ ํ๋ ธ๋ค๊ณ ๋ด๋ค ใ ใ
๋ค์ ์๊ฐํด๋ณด๋ dp ๋ฐฐ์ด์ด ๋ค๋ฅผ ํ์๊ฐ ์์๋ค!! ์ค๋ช ์ ํ์ด ์ฐธ์กฐ ใฑใฑ
๐ฅํ์ด๐ฅ
์ฒซ๋ฒ์งธ์ ๊ณ ๋ฅผ ์์ ํ๋๋ก ํฝ์คํด๋๊ณ 1149๋ฒ RGB๊ฑฐ๋ฆฌ์ฒ๋ผ dp๋ฅผ ํตํด ๊ฐ์ฅ ๋น์ฉ์ด ์ ๊ฒ ๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
dp[i][j] : i๋ฒ์งธ ์ง์ ์น ํ๋ j์ (j = 0 : red / 1 : green / 2 : blue)
dp[i][0]์ dp[i-1][1]๊ณผ dp[i-1][2]์ค์์ ๋ ์์ ๊ฐ๊ณผ i๋ฒ์งธ ์ง์ ๋นจ๊ฐ์์ผ๋ก ์น ํ๋ ๋น์ฉ์ ๋ํ ๊ฐ์ ๋ฃ์ด์ค๋ค.
dp[i][1]์ dp[i-1][0], dp[i-1][2]์ค์์
dp[i][2]์ dp[i-1][0], dp[i-1][1]์ค์์ ๊ณจ๋ผ ๋๊ฐ์ด ๊ณ์ฐํด์ค๋ค.
์ต์ข ์ ์ผ๋ก ์ฒซ๋ฒ์งธ ์ง์ ์์ ๊ณ ์ ํ์ ๋ ๋ง์ง๋ง ์ง์ ์๊ณผ ๊ฒน์น์ง ์๋๋ค.
์๋? dp[1][0] = 10, dp[1][1] = MAX, dp[1][2] = MAX์ผ ๋ dp[2][0]๋ง MAX๊ฐ ๋ ๋ํด์ง๊ณ , dp[2][1]๊ณผ dp[2][2]๋ dp[1][0]๊ฐ์ด ๋ํด์ง๋ค. ๊ทธ๋ฌ๊ณ ๋๋ฉด dp[3][j]์๋ ๋ชจ๋ ์ฒซ๋ฒ์งธ ์ง์ ๋นจ๊ฐ์์ผ๋ก ์น ํ ๊ฒฝ์ฐ์ ๋น์ฉ๋ง ๋ค์ด๊ฐ๊ฒ ๋๋ค.
์ด์ฐจํผ dp์๋ ์ต์ ์ ๊ฐ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ํ๋์ dp๋ฐฐ์ด๋ง์ ๊ฐ์ง๊ณ ์ฐ์ฐํ๊ณ ์ต์ข ์ ์ผ๋ก dp[n][j]๋ค๋ผ๋ฆฌ ๋น๊ตํด์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํด์ค๋ค.
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int house[1002][3];
int dp[1002][3];
int main() {
cin.tie(nullptr);
cout.tie(nullptr);
ios::sync_with_stdio(false);
cin >> n;
int x;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < 3; j++) {
cin >> x;
house[i][j] = x;
}
}
int ans = 1000001;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (j == i)
dp[1][j] = house[1][j];
else
dp[1][j] = 1000001;
}
for (int j = 2; j <= n; j++) {
dp[j][0] = min(dp[j - 1][1], dp[j - 1][2]) + house[j][0];
dp[j][1] = min(dp[j - 1][0], dp[j - 1][2]) + house[j][1];
dp[j][2] = min(dp[j - 1][0], dp[j - 1][1]) + house[j][2];
}
for (int j = 0; j < 3; j++) {
if (j == i) continue;
ans = min(ans, dp[n][j]);
}
}
cout << ans;
}
'๋ฐฑ์ค > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 17396๋ฒ ๋ฐฑ๋์ด (0) | 2022.11.11 |
---|---|
[๋ฐฑ์ค/C++] 20040๋ฒ ์ฌ์ดํด ๊ฒ์ (0) | 2022.11.03 |
[๋ฐฑ์ค/C++] 4889๋ฒ ์์ ์ ์ธ ๋ฌธ์์ด (0) | 2022.10.27 |
[๋ฐฑ์ค/C++] 21610๋ฒ ๋ง๋ฒ์ฌ ์์ด์ ๋น๋ฐ๋ผ๊ธฐ (0) | 2022.10.06 |
[๋ฐฑ์ค/C++] 24524๋ฒ ์๋ฆ๋ค์ด ๋ฌธ์์ด (0) | 2022.10.05 |