프로그래머스 LEVEL 2(연속 부분 수열 합의 개수)
-
사용 언어 : javascript
-
해결 날짜 : 2022-10-15
- 해결 방법 :
- circular를 위해 elements 뒤에 elements를 붙임 - sequence (마지막 인덱스 제외)
- elements의 길이만큼 반복하며 (1, 2, …, n) slice()를 사용해 sequence를 잘라 합 push()
- 마지막 인덱스는 한번만 수행하면 되기 때문에 for문 밖에서 따로 push()
- 중복 제거를 위해 Set()으로 변경 후 size 반환
- 회고 :
- Set에 바로 add()
-
코드
function solution(elements) { const answer = []; const sequence = [...elements, ...elements.slice(0, -1)]; for (let i = 1; i < elements.length; i++) { for (let j = 0; j < elements.length; j++) { answer.push(sequence.slice(j, j + i).reduce((acc, cur) => acc + cur, 0)); } } answer.push(elements.reduce((acc, cur) => acc + cur, 0)); return (new Set(answer)).size; }
- 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges