728x90
반응형
목차
문제
https://school.programmers.co.kr/learn/courses/30/lessons/161988
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 구현 방향
이중순회하면 시간 초과가 나기때문에 무조건 O(n)으로 해결해야 한다.
이때 누적합을 이용했다.
이때 -1 1 -1순일 때와 1 -1 1 순일때로 dp를 나누어서 생각하면 된다.
코드 구현
function solution(sequence) {
var answer = -Infinity;
const oddDp = [];
const evenDp = [];
oddDp.push(-sequence[0]);
evenDp.push(sequence[0]);
answer = Math.max(answer, evenDp[0], oddDp[0]);
for (let i = 1; i < sequence.length; i++) {
const s = sequence[i];
if (i % 2 === 0) {
oddDp.push(Math.max(oddDp[i-1] + -s, -s));
evenDp.push(Math.max(evenDp[i-1] + s, s));
} else {
oddDp.push(Math.max(oddDp[i-1] + s, s));
evenDp.push(Math.max(evenDp[i-1] + -s, -s));
}
answer = Math.max(answer, evenDp[i], oddDp[i]);
}
return answer;
}반응형
'PS > 프로그래머스' 카테고리의 다른 글
| [프로그래머스][문자열] 뉴스 클러스터링 (0) | 2025.12.06 |
|---|---|
| [프로그래머스][브루트포스] 방문 길이 (0) | 2025.11.27 |
| [프로그래머스][dfs] 후보키 (0) | 2025.11.26 |
| [프로그래머스][브루트포스] 문자열 압축 (0) | 2025.11.25 |
| [프로그래머스][수학] 2개 이하로 다른 버튼 (0) | 2025.11.19 |