Algorithms/Programmers

[Programmers] 연속 펄스 부분 수열의 합

징토리 2023. 3. 7. 17:07

문제 조건

  • 펄스 수열이란 [1, -1, 1, -1 ...] 이나 [-1, 1, -1, 1 ...] 과 같이 1 이나 -1로 시작하여 1과 -1이 번갈아 나오는 수열이다.
  • 주어진 sequence 배열에 펄스 수열을 곱한 수열 중 합이 가장 큰 부분 의 합을 리턴한다.

문제 풀이

  1. Class getArraysMaxSum 은 부분 수열의 합을 구하는 메서드이다.
  2. tmpSum 에 수열을 처음부터 더하면서, 합의 최대 값은 maxSum에 저장해둔다.
  3. 더한 값이 음수로 떨어지지만 않는다면 계속 값을 더해 최대 값을 만들어 주는 것이 핵심이다.
  4. 음수로 떨어지면 기록해왔던 최대값에 -가 되므로 값을 새로하여 다시 갱신한다.
  5. plus 배열에는 +1 로 시작하는 펄스 수열을 저장하고 minus 배열에는 -1로 시작하는 배열을 준비해둔다.
  6. 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