본문 바로가기
코딩테스트(알고리즘)/프로그래머스

[프로그래머스] 연속 부분 수열 합의 개수 (Javascript)

by Cafe Mocha 2023. 2. 21.

코딩테스트 연습 - 연속 부분 수열 합의 개수 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


알고리즘 : 구현, 중복제거

 

function solution(elements) {
  let answer = [];

  let len = elements.length;

  // 길이가 1~len까지

  while (len > 0) {
    if (elements.length === len) {
      answer.push(elements.reduce((acc, cur) => acc + cur));
      len--;
      continue;
    }

    let cnt = len;

    for (let i = 0; i < elements.length; i++) {
      let temp = 0;
      for (let j = 0; j < cnt; j++) {
        if (i + j < elements.length) {
          temp += elements[i + j];
        } else {
          temp += elements[i + j - elements.length];
        }
      }
      answer.push(temp);
    }

    len--;
  }

  let ans = [...new Set(answer)];
  return ans.length;
}