본문 바로가기
코테연습

173. 연속 부분 수열 합의 개수 Javascript

by hxunz 2023. 1. 6.

https://school.programmers.co.kr/learn/courses/30/lessons/131701

 

프로그래머스

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

programmers.co.kr

 

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
    원형 수열의 연속 부분 수열 합으로 만들 수 있는 수의 개수를 return 
  • 주어진 자료는 무엇인가?
    원형 수열의 모든 원소 elements
  • 조건은 무엇인가?
    원형 수열이란 일반적인 수열에서 처음과 끝이 연결된 형태의 수열을 말합니다.
    3 ≤ elements의 길이 ≤ 1,000
    1 ≤ elements의 원소 ≤ 1,000

2. 계획

  • elements를 순회하면서 elements의 길이만큼 잘라서 새로운 배열의 뒤에 붙인다. 
  • 이때, 이 새로운 배열을 순회하면서 자른 길이만큼의 요소를 더한다. 
  • 이 값들은 빈 배열에 넣어준다. 
  • 빈 배열에 넣어준 값들 중에 중복 되는 것을 제거하고 그 길이를 리턴한다.

3. 실행

  • 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (elements) => {
  let sum = [];
  for (let i = 1; i <= elements.length; i++) {
    const el = elements.concat(elements.slice(0, i));
    for (let j = 0; j < elements.length; j++) {
      sum.push(el.slice(j, j + i).reduce((acc, cur) => acc + cur, 0));
    }
  }

  const set = new Set(sum);

  return [...set].length;
};

test('solution', () => {
  expect(solution([7, 9, 1, 1, 4])).toEqual(18);
});

 

 

'코테연습' 카테고리의 다른 글

175. 스킬트리 Javascript  (0) 2023.01.09
174. 2xn 타일링  (1) 2023.01.09
172. 할인행사 Javascript  (0) 2023.01.05
171.귤 고르기 Javascript  (0) 2023.01.04
170. 문자열 나누기 Javascript  (0) 2023.01.03

댓글