#
문제 설명
수열을 가지고 놀기
어떤 자연수로 이루어진
원형 수열의 연속하는 부분 수열의 합으로
만들 수 있는 수가 모두 몇 가지인지 알아보기
조건
매개 변수
elements
반환값
elements | result |
---|---|
[7,9,1,1,4] | 18 |
function solution(elements) {
let answer = [];
const size = elements.length;
for (let len = 1; len <= size; len++) {
for (let i = 0; i < size; i++) {
const arr = elements.slice(i, i+len);
if (arr.length < len) {
elements.slice(0,len - arr.length).forEach((v) => arr.push(v));
}
const sum = arr.reduce((acc,cur,self) => acc+cur, 0);
answer.push(sum)
}
}
const no_repeat = new Set(answer);
return [...no_repeat].length;
}
function solution(elements) {
const circular = elements.concat(elements);
const set = new Set();
for (let i = 0; i < elements.length; i++) {
let sum = 0;
for (let j = 0; j < elements.length; j++) {
sum += circular[i + j];
set.add(sum);
}
}
return set.size;
}
풀이
set 과 배열을 통해 solution 구하기
- 배열 각 길이만큼 누적 더하기
- 부족한 길이만큼 시작 인덱스부터 더하기 (원형 수열)
- set 으로 중복 없애기