문제
https://school.programmers.co.kr/learn/courses/30/lessons/161988
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
sequence 배열에 -1, 1, -1 · · · 순서로 곱한 배한 배열, 1, -1, 1 · · · 순서로 곱한 배열 각각의 배열에서 연속된 부분 배열의 합이 가장 큰 값을 찾아 return 해주면 된다.
연속된 부분 배열의 합이 가장 큰 값을 찾는 알고리즘으로 kadane 알고리즘을 활용하면 된다
https://icodesiuuuu.tistory.com/12
Kadane’s Algorithm (카데인 알고리즘)
Kadane 알고리즘은 주어진 배열에서 연속된 부분 배열의 합이 가장 큰 값을 효율적으로 찾는 알고리즘. 이 알고리즘은 동적 프로그래밍(Dynamic Programming)의 일종으로, 선형 시간 복잡도 O(n)을 가
icodesiuuuu.tistory.com
import java.util.*;
class Solution {
static long max;
public long solution(int[] sequence) {
long answer = 0;
max = 0;
int[] a = sequence.clone();
int[] b = sequence.clone();
for(int i=0; i<sequence.length; i++) {
if(i%2 == 0) {
a[i] *= -1;
} else {
b[i] *= -1;
}
}
kadane(a);
kadane(b);
return max;
}
public static void kadane(int[] arr) {
long cur = 0;
for(int i=0; i<arr.length; i++) {
cur = Math.max(arr[i], cur+arr[i]);
max = Math.max(cur, max);
}
}
}
'문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 두 원 사이의 정수 쌍 - Java (0) | 2024.09.10 |
---|---|
[프로그래머스] 가장 긴 팰린드롬 - Java (0) | 2024.09.10 |
[프로그래머스] 호텔 방 배정 - Java (0) | 2024.09.03 |
[프로그래머스] N으로 표현 - Java (0) | 2024.09.02 |
[프로그래머스] 보행자 천국 - Java (2) | 2024.09.01 |