연습장

22. 등차수열의 특정한 항만 더하기 본문

프로그래머스/0단계

22. 등차수열의 특정한 항만 더하기

js0616 2023. 6. 19. 21:33

Q . 두 정수 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가 적어도 하나 존재합니다.


등차수열 : 두 항의 차이가 모두 일정한 수열을 뜻한다.

 

이중에서 true 인 부분만 모아서 더하면 되는 문제이다. 

 

간단하게 표현해보자면 

i 번째의 값 =  a + d * i  // (i는 인덱스)  라고 볼 수 있다.

 

included[i] = true / false 이기때문에 

for 문을 이용하여 included 배열 전부를 돌면서 

if 문을 이용하여 값이 true 인 i번째에 대하여

i 번째의 값을 다 더하면 된다.


function solution(a, d, included) {
    var answer = 0;
     for (let i =0 ; i<included.length ; i++) {
        if (included[i]) {
            answer += a + d*i
        }
    }
    return answer;
}


풀고나서 드는 생각인데

배열 전부다 순회 할 경우 forEach 나 map 함수를 이용할 수 있지 않을까?

이 경우에 새로운 배열이 필요한게 아니니 map 함수보단 forEach 를 이용하면 좋겠다. 

 

배열.forEach( (값, 인덱스) => { 삼항연산자 } )

 

function solution(a, d, included) {
    let answer = 0;
    included.forEach((x,i) => { x ? answer += a+d*i : 0 })
    return answer;
}

 

코드가 짧아진 기분이 들어서 마음에 든다. 

 

'프로그래머스 > 0단계' 카테고리의 다른 글

24. 원소들의 곱과 합  (0) 2023.06.19
23. 주사위 게임 2  (0) 2023.06.19
21. 코드 처리하기  (0) 2023.06.19
20. flag에 따라 다른 값 반환하기  (0) 2023.06.19
19. 조건 문자열  (0) 2023.06.19