728x90
반응형
✅문제설명
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.
✅입출력 예
최대의 난제 ! boolean형은 앞선 문제처럼 각각 하나씩 매칭 되는 것이 안된다.
Newin라는 객체를 만들어서 넣었는데 제일 마지막에 넣은 값만 출력되는 문제가 발생한다.
그러다가!! 여차저차 풀이를 완성해보았다.
💡내가 작성한 코드
function solution(a, d, included) {
let sum = 0;
for ( let i = 0 ; i < included.length; i++){
let result = included[i] === true ? a + d*i : 0 ;
sum = sum + result;
}
return sum;
}
굳이 객체로 매칭 시켜줄 필요는 없었다. 그냥 true가 나오면 그 index값을 이용해서 덧셈식을 만들어주면 됐다.
💡다른 사람들 풀이
function solution(a, d, included) {
return included.reduce((acc, flag, i) => {
return flag ? acc + a + d * i : acc
}, 0)
}
역시,,, 달라 reduce()!!!함수를 사용했다. 언제쯤 나는 for문 말고 다른 함수를 사용해볼 수 있을까 그만큼 각 함수마다 정확한 사용 용도를 알아야 할 것 같다.
저렇게 짧은 코드가 가능했던 것은 sum = sum + result 이렇게 누적하는 코드를 따로 적는 대신 reduce() 함수에는 누적값요소 포함되어 있기 때문이었던 것 같다.
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
부족한 금액 계산하기 (0) | 2023.11.13 |
---|---|
원소들의 곱과 합 (0) | 2023.11.07 |
주사위 게임 2 - Math.pow() / 거듭 제곱의 표현 (1) | 2023.11.06 |
코드 처리하기 (1) | 2023.11.03 |
추억 점수 (0) | 2023.10.24 |