문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120831
답안1.
function solution(n) {
var answer = 0;
for (let i = 2; i <= n; i = i + 2) {
answer += i
}
return answer;
}
짝수의 합을 구하는 것이니 애초에 짝수만 더하게끔 코딩을 해줄 수 있다.
답안2. (메서드 체이닝)
function solution(n) {
return Array(n).fill().map((_, i) => i + 1).filter((e) => e % 2 === 0).reduce((acc, e) => acc + e, 0)
}
- Array(n)은 n개 만큼의 엘리먼트를 가진 배열을 만들어준다. 이때 배열 내부는 empty가 된다.
- empty한 배열은 map으로 순회가 안되므로 어떤 값으로든 채워준다. 이 역할은 fill()이 한다.
- map은 자신을 호출한 배열과 같은 길이를 가진 배열을 리턴하는데, 엘리먼트는 map 콜백함수의 리턴값이 된다.
- filter는 조건식에 맞는 엘리먼트를 모아 배열로 만들어 리턴한다.
- reduce는 리턴값이 계속 누산되며 배열을 전부 순회하는 메서드이다.
- 이렇게 배열 메서드를 활용해서 값을 도출해볼 수 있다.
'코테 문제 풀이' 카테고리의 다른 글
[레벨 0] 짝수 홀수 개수 (모범답안 + 재귀함수 괴답안 with slice) (0) | 2022.12.06 |
---|---|
[레벨 0] 중복된 숫자 개수 (for of) (0) | 2022.12.06 |
[레벨 0] 양꼬치 (0) | 2022.12.05 |
[레벨 0] 각도기 (0) | 2022.12.05 |
[레벨 0] 숫자 비교하기 (0) | 2022.12.05 |