https://school.programmers.co.kr/learn/courses/30/lessons/161988
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 3.
cpp ๋ฐฐ์ด ์ ์ธ๋ ๊น๋จน์ด๋ฒ๋ ค์ .. ํฐ์ผ๋ฌ๋ค ใ ใ ๋ค์ ๋ค ๊ณต๋ถํด์ผ์ง
์ด ๋ฌธ์ ๋ dp๋ก ํ์ด์ผํ๋๋ฐ, ์์ด๋์ด ๋ ์ฌ๋ฆฌ๊ธฐ๊ธฐใ ์กฐ๊ธ ํ๋ค์๋ค
ํ์ค ๋ฐฐ์ด๊ณผ ์ฐ์ ๋ถ๋ถ์์ด์ ๋ณด๊ณ sliding window๋ก ํ์ด์ผํ๋? ์ถ์๋๋ฐ
ํ๋ค ๋ณด๋ left๋ฅผ ์ฎ๊ธธ ์กฐ๊ฑด์ด ์์ด์ ์ด๊ฒ ์๋๊ฐ๋ณด๋ค ์ถ์๋ค.
๊ทธ๋์ DP๋ก ์ต๋๊ฐ์ ์ ์ฅํ๋ฉด์ ํ์๋ค!
์ผ์ฐจ์ ๋ฐฐ์ด์ ๋๊ฐ ์ฐ๋ ค๋ค๊ฐ, ๋ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์ํด ์ด์ฐจ์ ๋ฐฐ์ด๋ก ๋ฐ๊พธ์๋ค.
dp[][0] -> ํ์ค๊ฐ 1๋ถํฐ ์์
dp[][1] -> ํ์ค๊ฐ -1๋ถํฐ ์์
ํญ์ ์ต๋๊ฐ์ ๊ณ ๋ คํ ๋, ํ์ฌ ์์ ์์ ์ด ์ต๋์ผ ๊ฒฝ์ฐ๊น์ง ๊ณ ๋ คํ ๊ฒ!!
๋์ ํ์ด
#include <string>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
long long solution(vector<int> sequence) {
long long answer = 0;
// dp? ์๋์ฐ? -> ์๋์ฐ๋ ๊ณ ์ ๊ธธ์ด ํ์์ ์ ํฉ. dp๋ก ํ์ด์ผํจ
long long dp[500001][2] = {0,}; // i๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง์ ์ต๋ ํฉ
int nowPulse = 1;
dp[0][0] = sequence[0];
dp[0][1] = sequence[0] * -1;
answer = max(dp[0][0], dp[0][1]);
for(int i=1; i<sequence.size(); ++i){
nowPulse *= (-1);
long long now = sequence[i]*nowPulse;
dp[i][0] = max(dp[i-1][0] + now, now);
dp[i][1] = max(dp[i-1][1] - now, (-1) * now);
if(answer < dp[i][0]) answer = dp[i][0];
if(answer < dp[i][1]) answer = dp[i][1];
}
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] Lv.4 : ํธํ ๋ฐฉ ๋ฐฐ์ (์ฌ๊ท) (0) | 2025.04.16 |
---|---|
[C++/PGS] Lv.3 : ์๊ณผ ๋๋ (DFS) (0) | 2025.04.15 |
[C++/PGS] Lv.3 : ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (0) | 2025.04.14 |
[Javascript/PGS] Lv.2 : ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ (1) | 2025.04.14 |
[Javascript/PGS] Lv.2 : ์์ ๋์งํ (1) | 2025.04.09 |