등차수열의 특정한 항만 더하기
문제 설명
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.
입출력 예
a | b | 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) {
let array = Array(included.length).fill(0).map((v, i) => a + i * d);
return included.reduce((acc, cur, i) => acc + (cur && array[i]), 0);
}
- 등차수열 array를 생성한다.
- reduce 메서드를 이용해서 included의 요소가 true일 때만 acc에 더해준다.
다른 사람의 풀이
function solution(a, d, included) {
return included.reduce((acc, flag, i) => {
return flag ? acc + a + d * i : acc
}, 0)
}
이 풀이를 보고 나서 굳이 등차수열을 따로 생성할 필요 없이 reduce 메서드 하나로 해결할 수 있다는 점을 깨달았다..!
수정한 풀이
function solution(a, d, included) {
return included.reduce((acc, cur, i) => acc + (cur && a + i * d), 0);
}
이렇게 문제 풀이 시간 단축 시켰을 때 기분 좋음 ㅎㅎ
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.05.12 Programmers_코드 처리하기 (0) | 2023.05.13 |
---|---|
[TIL] 2023.05.11 Programmers_부분 문자열 이어 붙여 문자열 만들기 (0) | 2023.05.11 |
[TIL] 2023.05.06 Programmers_문자열 내 마음대로 정렬하기 (0) | 2023.05.06 |
[TIL] 2023.04.24 Programmers_조건에 맞게 수열 반환하기 (0) | 2023.04.24 |
[TIL] 2023.04.23 Programmers_옹알이(1) (0) | 2023.04.23 |
댓글