๐ก์ฒซ๋ฒ์งธ ์์ด๋์ด
์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ๋ฐ๋ก ์ ์ฅํด์ ์ถ๊ฐ๋ ๊ฐ์ด ์ต๋๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ์ต์๊ฐ๋ณด๋ค ์์ผ๋ฉด ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ ๋ฐ์ดํธํด์ฃผ๋ ๋ฐฉ์์ ์๊ฐํ๋ค.
์ด ๋ฐฉ๋ฒ์ผ๋ก๋ 1 <= i <= j <= |A| ๋ผ๋ ์กฐ๊ฑด์ ๋ง์กฑํ ์ ์์๋ค.
๐ก๋๋ฒ์งธ ์์ด๋์ด
์ต์๊ฐ์ ๋ฐ๋ก ์ ์ฅํ๋ ๊ฑด ์ฒซ๋ฒ์งธ ์์ด๋์ด์ ๋์ผํ๋ค. ๋ค๋ง ์ต๋๊ฐ์ ๋ฐ๋ก ์ ์ฅํ์ง ์๊ณ (์ถ๊ฐ๋ ๊ฐ - ์ต์๊ฐ)๊ณผ dp๋ฐฐ์ด์ ์ด์ ๊ฐ์ ๋น๊ตํด์ ๋ ํฐ ๊ฒ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋๋ค.
์๋ฅผ ๋ค์ด ์์ 1๋ฒ์ ๊ฒฝ์ฐ
์ ํ์ฒ๋ผ (์ถ๊ฐ-์ต์)๊ณผ dp[i-1] ์ค ๋ ํฐ ๊ฐ์ด dp[i]๊ฐ ๋๋ค.
์ถ๊ฐ ํ์(i) ์ถ๊ฐํ ๊ฐ ์ต์๊ฐ ์ถ๊ฐ-์ต์ dp[i-1] dp[i] 1 50 50 0 dp[0] = 0์ผ๋ก
์ด๊ธฐํ0 2 100 50 50 0 50 3 70 50 20 50 50 4 110 50 60 50 60 5 10 10 0 60 60 6 100 10 90 60 90
์ฝ๋๋ 1ํธ๋ง์ ์ฑ๊ณต!
์ ์ถํ ์ฝ๋
#include <iostream>
using namespace std;
int dp[200000];
int min_num;
int main (){
cin.tie(NULL);
ios::sync_with_stdio(false);
int t, x;
cin >> t;
for(int i=0; i < t; i++){
cin >> x;
if( i==0 ) {
dp[0] = 0;
min_num = x;}
else {
if ( x < min_num ) { min_num = x;}
dp[i] = (x-min_num) > dp[i-1] ? (x-min_num) : dp[i-1];
}
cout << dp[i] << " " ;
}
}
728x90
'๋ฐฑ์ค > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 1790๋ฒ ์ ์ด์ด ์ฐ๊ธฐ 2 (0) | 2022.07.11 |
---|---|
[๋ฐฑ์ค/C++] 16936๋ฒ ๋3๊ณฑ2 (0) | 2022.07.10 |
[๋ฐฑ์ค/C++] 15558๋ฒ ์ ํ ๊ฒ์ (0) | 2022.07.07 |
[๋ฐฑ์ค/C++] 25212๋ฒ ์กฐ๊ฐ ์ผ์ดํฌ (0) | 2022.07.03 |
[๋ฐฑ์ค/C++] 25215๋ฒ ํ์ดํ (0) | 2022.06.29 |