:ledger: 문제 설명

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

:one: 제한사항

  • -0 ≤ n의 원소 ≤ 1000

:two: 입출력 예

n result
10 30
4 6

:three: 입출력 예 설명

:pushpin: 3-1) 입출력 예 설명 #1

n이 10이므로 2 + 4 + 6 + 8 + 10 = 30을 return 합니다.

:pushpin: 3-2) 입출력 예 설명 #2

n이 4이므로 2 + 4 = 6을 return 합니다.

:four: 프로그래머스에서 제공한 코드

처음 프로그래머스에서 작성된 코드는 아래와 같다.

function solution(n) {
    var answer = 0;
    return answer;
}

:ledger: 문제 풀이


const solution = n => {
  let answer = 0;
  for(let i = 0; i <= n; i++) { 
    if(i % 2 === 0) answer += i;
  }
  return answer;
} 

:one: 함수 선언

  • 화살표 함수를 사용하여 n 매개변수를 받는다.

:two: 풀이

  • 변수 answer 생성 후 배열을 생성한다.
  • let answer = 0 을 선언하여 합계를 저장할 변수 answer를 0으로 초기화한다.
  • 반복문을 사용하여 0부터 매개변수로 전달받은 값까지 반복문을 실행한다.
  • if(i % 2 === 0) 조건문을 통해 i가 짝수인 경우 answeri를 더한다.
  • return aswer를 통해 최종적으로 모든 짝수의 합인 answer를 반환한다.

:three: 결과 반환

  • n에 10를 대입할 경우 10번동안 반복문이 실행되어, 2,4,6,8,10 을 반환하여 각각 더해준다.
  • n에 4를 대입할 경우 4번동안 반복문이 실행되어, 2,4 을 반환하여 각각 더해준다.

:four: 실행

  • n이 10일 경우 2 + 4 + 6 + 8 + 10 = 30을 반환한다.
  • 4이 10일 경우 2 + 4 = 6을 반환한다.

:fire: 다른 사람의 풀이 참고

나와 같이 반복문을 사용하여 푼 내용이 보여 좋았으나, 수열 공식(?)을 이용한 풀이과정이 있는데..직접 값을 넣어서 테스트해보니 신기하게 잘 작동된다.
수학을 잘 할수록 문제 풀이에 도움이 많이 되는 것 같다. (수학 공부를 지금이라도..?)</br> 짝수를 구하는 방법은 수열 공식을 이용하면 정말 편리한 것 같다!

// [51명] 수열 공식을 통한 풀이 과정
function solution(n) {
    var half = Math.floor(n/2);
    return half*(half+1);
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges