[코테] 연속 부분 수열 합의 개수 / 슬라이딩 윈도우

jm4293·2024년 1월 17일
0

프로그래머스 - 연속 부분 수열 합의 개수 Lv.2

문제

풀이

  • 슬라이딩 윈도우 알고리즘 접근
    • 지정된 범위를 가지고 한 칸씩 움직이는 방법으로 다음 범위로 넘어가기 위해 맨 앞 요소를 빼고 맨 뒤 요소를 더한다.

코드

function solution(elements) {
  const sumSet = new Set();
  const length = elements.length;

  for (let subLength = 1; subLength <= length; subLength++) {
    let currentSum = 0;

    for (let start = 0; start < length; start++) {
      if (start === 0) {
        for (let index = 0; index < subLength; index++) {
          currentSum += elements[index];
        }
      } else {
        currentSum -= elements[start - 1];
        currentSum += elements[(start + subLength - 1) % length];
      }
      sumSet.add(currentSum);
    }
  }

  return sumSet.size;
}

console.log(solution([7, 9, 1, 1, 4])); //
profile
무언가를 만드는 것을 좋아합니다

0개의 댓글

관련 채용 정보