문제설명
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.
풀이 과정
included 가 배열의 형태로 들어오니까 이 배열을 기준으로 forEach를 돌리면 되겠다....
고차배열 함수를 쓸 수는 없는걸까? 하는 고
나의 풀이
function solution(a, d, included) {
var answer = 0;
included.forEach((el, idx) => {
if(el == true) answer += a + d*idx;
});
return answer;
}
best 풀이
function solution(a, d, included) {
return included.reduce((acc, flag, i) => {
return flag ? acc + a + d * i : acc
}, 0)
}
아... 역시 reduce를 사용할 수 있는 방법이 있었군....
** reduce함수 살펴보기
array.reduce((accumulator, currentValue, currentIndex, array) => {
// 콜백 함수 내용
}, initialValue);
reduce는 총 네개의 파라미터를 사용할 수 있음.
- accumulator (누산기): 이전 함수 호출의 반환값을 누적하는 변수입니다.
- currentValue (현재 값): 현재 처리 중인 배열 요소입니다.
- currentIndex (현재 인덱스): 현재 요소의 인덱스입니다.
- array (배열 자체): reduce를 호출한 배열입니다.
- initialValue (초기값): (선택적) 누산기의 초기값으로, 설정하지 않으면 배열의 첫 번째 요소가 사용됩니다.
'frontend > javaScript' 카테고리의 다른 글
[js / 알고리즘연습] 원소들의 곱과 합 (0) | 2024.09.12 |
---|---|
[js / 알고리즘연습] 주사위게임2 (0) | 2024.09.12 |
[js 기본기] arguments, Promise.all(), Promise.race() (0) | 2024.08.22 |
[js 기본기] Nullish coalescing operator, prototype 메소드 (0) | 2024.08.21 |
[js / 알고리즘연습]프로그래머스 lv0.n개 간격의 원소들 (0) | 2024.08.19 |