처음 작성한 코드는 다음과 같다.
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
int arr[n+1];
for(int i=1; i<=n; i++)
cin >> arr[i];
int dp[n+1];
int maxsum = -1001;
dp[1] = arr[1];
for(int i=2; i<=n; i++){
if( dp[i-1] < (dp[i-1]+arr[i]))
dp[i] = dp[i-1]+arr[i];
else
dp[i] = dp[i-1];
}
cout << dp[n];
return 0;
}
다시 작성한 코드는 다음과 같다.
위에서 maxsum 변수선언만 하고 사용하진 않았는데,
사용하는 방식으로 수정했더니 됐다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int n;
cin >> n;
int arr[n+1];
for(int i=1; i<=n; i++)
cin >> arr[i];
int dp[n+1];
int maxsum = arr[1];
dp[1] = arr[1];
for(int i=2; i<=n; i++){
dp[i] = max(arr[i], dp[i-1]+arr[i]);
if( dp[i] > maxsum )
maxsum = dp[i];
}
cout << maxsum;
return 0;
}
'백준' 카테고리의 다른 글
백준 11048 이동하기 c++ (0) | 2024.03.11 |
---|---|
백준 9095 1, 2, 3 더하기 c++ (0) | 2024.03.11 |
백준 11727 2xn 타일링 2, c++ (0) | 2024.03.10 |
백준 2579 계단 오르기, c++ (0) | 2024.03.09 |
백준 1965 상자넣기, c++ (0) | 2024.03.09 |