문제 조건
- 펄스 수열이란 [1, -1, 1, -1 ...] 이나 [-1, 1, -1, 1 ...] 과 같이 1 이나 -1로 시작하여 1과 -1이 번갈아 나오는 수열이다.
- 주어진 sequence 배열에 펄스 수열을 곱한 수열 중 합이 가장 큰 부분 의 합을 리턴한다.
문제 풀이
- Class getArraysMaxSum 은 부분 수열의 합을 구하는 메서드이다.
- tmpSum 에 수열을 처음부터 더하면서, 합의 최대 값은 maxSum에 저장해둔다.
- 더한 값이 음수로 떨어지지만 않는다면 계속 값을 더해 최대 값을 만들어 주는 것이 핵심이다.
- 음수로 떨어지면 기록해왔던 최대값에 -가 되므로 값을 새로하여 다시 갱신한다.
- plus 배열에는 +1 로 시작하는 펄스 수열을 저장하고 minus 배열에는 -1로 시작하는 배열을 준비해둔다.
- getArraysMaxSum를 통해 plus 배열에서의 최대값과 minus배열의 최대값을 비교해서 더 큰 값을 리턴한다.
https://school.programmers.co.kr/learn/courses/30/lessons/161988
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithms > Programmers' 카테고리의 다른 글
[Programmers] 바탕화면 정리 (0) | 2023.03.07 |
---|---|
[Programmers] 덧칠하기 (0) | 2023.03.07 |
[Programmers] 대충 만든 자판 (0) | 2023.03.07 |
[Programmers] 혼자서 하는 틱택토 (0) | 2023.03.07 |
[Programmers] 카드 뭉치 (0) | 2023.03.07 |