July 17, 2023
N개의 정수로 구성된 비어 있지 않은 배열 A가 주어집니다. 0 ≤ P ≤ Q < N인 한 쌍의 정수(P, Q)를 배열 A의 슬라이스라고 하며, 한 슬라이스(P, Q)의 합은 A[P] + A[P+1] + … + A[Q]의 총합입니다. + A[Q]입니다.
함수를 작성합니다:
function solution(A);이 함수는 N개의 정수로 구성된 배열 A가 주어졌을 때 A의 모든 슬라이스의 최대 합을 반환합니다.
예를 들어 배열 A가 주어졌을 때
a[0] = 3 a[1] = 2 a[2] = -6
a[3] = 4 a[4] = 0이면 함수는 5를 반환해야 합니다:
다음 가정에 대한 효율적인 알고리즘을 작성하십시오:
배열을 순회하면서 현재까지 더한값이 max 값보다 큰지 작은지 비교해간다.
function solution(A) {
if (A.length === 1) {
return A[0]
}
let result = A[0]
let sum = A[0]
for (let i = 1; i < A.length; i++) {
sum = Math.max(A[i], sum + A[i])
result = Math.max(result, sum)
}
return result
}