반응형
문제
연속합
https://www.acmicpc.net/problem/1912
풀이
설명
n개의 정수로 이루어진 수열에서, 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 값을 구하는 문제입니다.
DP를 통해 해결할 수 있습니다.
dp[i]는 i번째 수를 마지막으로 포함했을 때 구할 수 있는 최댓값입니다.
정수 배열을 nums라고 할 때,
dp[i]의 값은 다음 두 가지 중 더 큰 값입니다.
- dp[i -1] + nums[i]
- nums[i]
예시 코드
function solution() {
const n = Number(input());
const nums = input().split(" ").map(Number);
const dp = [nums[0]];
for (let i = 1; i < n; i++) {
dp[i] = Math.max(dp[i - 1] + nums[i], nums[i]);
}
return Math.max(...dp);
}
'Coding Problem > DP' 카테고리의 다른 글
[BOJ 9465] 스티커 (0) | 2025.03.05 |
---|---|
[BOJ 2156] 포도주 시식 (0) | 2025.03.04 |
[BOJ 2579] 계단 오르기 (0) | 2025.02.28 |
[BOJ 17404] RGB거리 2 (0) | 2025.02.17 |
[BOJ 1149] RGB거리 (0) | 2025.02.16 |