๐๏ธ ๊ฒช์ ๋ฌธ์
- ์ต๋๊ฐ๊ณผ ์ต์๊ฐ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ด๊ธฐ ์ํ ๋ฐฐ์ด์ [100000][3] ์ฌ์ด์ฆ๋ก ๋ง๋ค์๋ค.
- ์ด byte์๋ก๋ 360๋ง = 3600KB = 3.6MB๋ผ์ 4MB ์ด๋ด๋๊น ๊ด์ฐฎ๊ฒ ์ง ํ๋๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ด์งํผ ์ด์ ํ๊ณผ ํ์ฌํ๋ง ํ์ํ ๊ฑฐ๊ธฐ ๋๋ฌธ์ dp๋ฐฐ์ด์ [2][3]์ผ๋ก ์ ์ธํด์ i%2๋ก ์ค๋ง ๋ฒ๊ฐ์์ ์ฌ์ฉํด์ ํด๊ฒฐํ๋ค.
- GPT๊ฐ ์ด ๋ฐฉ์์ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ผ๊ณ ์๋ ค์คฌ๋ค.
- ๋ง์น ๋ฏธ๋ซ์ด๋ฌธ์ด ์ค๋ฅด๋ฅต ์ฎ๊ฒจ๊ฐ๋ฏ ์กฐํํ๋ ํ์ด ์ค๋ฅด๋ฅต...............
๐ ์ฝ๋
#include <iostream>
#include <algorithm>
using namespace std;
int N;
int board[100000][3];
// N ์ต๋๊ฐ๋งํผ ๋ง๋ค ํ์๊ฐ ์๊ตฌ๋...
// 2์ค๋ง ๋ง๋ค๊ณ ์ต๊ทผ ๋์ ๊ฐ๊น์ง๋ง ๊ธฐ๋กํ๊ณ i % 2 ๋ก ์ค๋ง ๋ฒ๊ฐ์ ์ฌ์ฉํ๋ฉด ๋จ... ์ถฉ๊ฒฉ๐ฅ
int dpMax[2][3];
int dpMin[2][3];
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> N;
for (int i=0; i<N; i++) {
cin >> board[i][0] >> board[i][1] >> board[i][2];
}
dpMax[0][0] = board[0][0];
dpMax[0][1] = board[0][1];
dpMax[0][2] = board[0][2];
dpMin[0][0] = board[0][0];
dpMin[0][1] = board[0][1];
dpMin[0][2] = board[0][2];
for (int i=1; i<N; i++) {
int before = (i - 1) % 2;
dpMax[i % 2][0] = board[i][0] + max(dpMax[before][0], dpMax[before][1]);
dpMax[i % 2][1] = board[i][1] + max({dpMax[before][0], dpMax[before][1], dpMax[before][2]});
dpMax[i % 2][2] = board[i][2] + max(dpMax[before][1], dpMax[before][2]);
dpMin[i % 2][0] = board[i][0] + min(dpMin[before][0], dpMin[before][1]);
dpMin[i % 2][1] = board[i][1] + min({dpMin[before][0], dpMin[before][1], dpMin[before][2]});
dpMin[i % 2][2] = board[i][2] + min(dpMin[before][1], dpMin[before][2]);
}
int last = (N+1)%2;
cout << max({dpMax[last][0], dpMax[last][1], dpMax[last][2]}) << ' ' <<
min({dpMin[last][0], dpMin[last][1], dpMin[last][2]}) << '\n';
return 0;
}
'Algorithm > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] 12865: ํ๋ฒํ ๋ฐฐ๋ญ (0) | 2025.04.15 |
---|---|
[C++] 9251: LCS (0) | 2025.04.15 |
[C++] 1916: ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (0) | 2025.04.11 |
[C++] 1149: RGB๊ฑฐ๋ฆฌ (0) | 2025.04.03 |
[C++] 15685: ๋๋๊ณค ์ปค๋ธ (0) | 2025.04.03 |