빵 입니다.

[프로그래머스] 짝수의 합 본문

알고리즘과 자료구조/알고리즘

[프로그래머스] 짝수의 합

bread-gee 2023. 5. 10. 01:33

문제 설명

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.


제한 사항

  • 0 < n ≤ 1000

입출력 예

n result
10 30
4 6

나의 풀이

function solution(n) {
    let answer = 0;
    for (let i = 1; i <= n; i++) {
        if (i % 2 === 0) {
            answer += i
        }
    }
    return answer;
}
// 너무... 머리를 안굴리고(?) 그냥 아는 문법만 써서, 문제 풀기에만 초점을 맞춘 것 같다 ㅜㅜ

다른 사람 풀이1

function solution(n) {
    var half = Math.floor(n/2);
    return half*(half+1);
}
// 수열 공식을 이용하신 분... 코드도 깔끔하고, 해답도 정확하다.

다른 사람 풀이2

function solution(n) {
    var answer = 0;
    for(let i=2 ; i<=n ; i+=2)
        answer += i;
    return answer;
}
// 2를 기준으로 증가하니까 반복 횟수를 줄일 수 있구나!

다른 사람 풀이3

function solution(n) {
    // 배열채우기
    // '0'.repaet(n) // Array(n) : (empty로 채워짐)

    // 각각을 나누기
    // '0'.repaet(n).split('') // Array(100).fill() : (undefined로 채워짐)

    // 숫자로 채우기
    // Array(n).fill().map((_, index) => index) : 보통 value를 넣지만 사용하지않기에 _로 대체

    // 시작 숫자를 0이 아닌 1로 설정
    // Array(n).fill().map((_, index) => index + 1)

    // 배열에서 짝수만 뽑아내기(v => v % 2 === 0)
    // Array(n).fill().map((_, index) => index + 1).filter(v => v % 2 === 0)

    // 나온 값 모두 더하기
    // Array(n).fill().map((_, index) => index + 1).filter(v => v % 2 === 0).reduce((a , c) => a + c)

    // 타입에러 발생 방지를 위해 리듀서의 초기값을 설정
    // Array(n).fill().map((_, index) => index + 1).filter(v => v % 2 === 0).reduce((a , c) => a + c, 0)

    return Array(n)
        .fill()
        .map((_, index) => index + 1)
        .filter(v => v % 2 === 0)
        .reduce((a, c) => a + c, 0);
}
// 이 분은 풀이까지 적어주셨다.
// 대체 어떻게 이런 생각을 가지고 계신거죠...👍🏻
반응형
Comments