[프로그래머스] 등차수열의 특정한 항만 더하기 (Javascript)

2025. 3. 12. 09:41·Algorithm/프로그래머스: 기초 트레이닝

문제

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

요구사항
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.

제한조건

- 1 ≤ a ≤ 100

- 1 ≤ d ≤ 100

- 1 ≤ included의 길이 ≤ 100

- included에는 true가 적어도 하나 존재합니다.


입출력
a d included result
3 4 [true, false, false, true, true] 37
7 1 [false, false, false, true, false, false, false] 10

 

 

내가 생각한 로직과 코드

💻 전체 코드

function solution(a, d, included) {
     const arr = Array(included.length).fill(a).map((num, idx) => num + idx * d);
     const answer = included.reduce((a, c, i) => {
         return c ? a + arr[i] : a;
     }, 0);
     return answer;
 }

[3, 7, 11, 15, 19]의 배열을 먼저 만들어야겠다고 생각했다.

 

const arr = Array(included.length).fill(a).map((num, idx) => num + idx * d);

그래서 `Array`와 `fill`을 이용해서 included 배열의 길이 만큼 a로 차있는 배열을 하나 만들었다.

[3, 3, 3, 3, 3]의 형태가 된다.

이후 map을 이용해서 인덱스 * d를 더한 배열로 만들어주었다.

최종적으로 [3, 7, 11, 15, 19]의 형태가 된다.

 

const answer = included.reduce((a, c, i) => {
  return c ? a + arr[i] : a;
}, 0);

reduce를 이용해서 하나의 값을 도출하려고 했다.

included의 값이 true일 때만 더해주는 로직이다.

 

테스트를 무사히 통과하긴 했지만,

분명 이거보다 간결하게 짤 수 있는 코드가 존재할 것 같았다.

 

 

다른 해결방법

⚒️ 사용한 도구: `reduce`

function solution(a, d, included) {
    const answer = included.reduce((acc, c, i) => {
        return c ? acc + a + d * i : acc;
    }, 0);
    return answer;
}

내가 구현했던 코드처럼 `reduce`를 사용했지만 훨씬 간결하다.

새롭게 배열을 만들지 않아도 reduce 안에서 모두 해결이 가능하다.

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > 프로그래머스: 기초 트레이닝' 카테고리의 다른 글

[프로그래머스] 문자열이 몇 번 등장하는지 세기 (Javascript)  (1) 2025.03.18
[프로그래머스] 세로 읽기 (Javascript)  (1) 2025.03.05
[프로그래머스] 0 떼기 (Javascript)  (0) 2025.02.27
[프로그래머스] 간단한 식 계산하기 (Javascript)  (0) 2025.02.21
[프로그래머스] l로 만들기 (Javascript)  (0) 2025.02.20
'Algorithm/프로그래머스: 기초 트레이닝' 카테고리의 다른 글
  • [프로그래머스] 문자열이 몇 번 등장하는지 세기 (Javascript)
  • [프로그래머스] 세로 읽기 (Javascript)
  • [프로그래머스] 0 떼기 (Javascript)
  • [프로그래머스] 간단한 식 계산하기 (Javascript)
집으로 감자
집으로 감자
Hello World
  • 집으로 감자
    Potato to Home
    집으로 감자
  • 전체
    오늘
    어제
  • 링크

    • Github
    • 분류 전체보기
      • Front-end
        • TIL
        • Javascript
        • Typescript
        • React
        • Next.js
        • CSS
        • 라이브러리
      • Algorithm
        • 프로그래머스: 기초 트레이닝
        • 프로그래머스 LV1
      • TroubleShooting
      • Problem & Solution
      • Project
      • Programing Knowledge
        • 개발 용어
        • CS
        • 운영체제
        • 자료구조
        • 데이터 베이스
  • 태그

    실행컨텍스트
    react
    JavaScript
    http
    회고
    tanstackquery
    트러블슈팅
    개발용어
    반응형웹
    styledcomponent
    Til
    문제해결
    CSS
    코딩테스트
    프로그래머스
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
집으로 감자
[프로그래머스] 등차수열의 특정한 항만 더하기 (Javascript)
상단으로

티스토리툴바