연습장
22. 등차수열의 특정한 항만 더하기 본문
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 |