문제 설명
정수n
이 주어질 때,n
이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
for
문을 사용하여 0부터 n까지 순회하고if
문을 사용하여 짝수인 경우에만 answer에 더한다.function solution(n) {
let answer = 0;
for (let i = 0; i <= n; i++) {
if (i % 2 === 0) answer += i;
}
return answer;
}
function solution(n) {
var half = Math.floor(n/2);
return half*(half+1);
}
감탄.. 감탄... 또 감탄...!
이 코드를 보자마자 어렸을 때 자주 들었던 가우스의 덧셈이 뇌리에 팍 꽂혔다. 10까지의 짝수의 덧셈은 (10/2) * (10/2+1)
인 30이고, 4까지의 짝수의 덧셈은 (4/2) * (4/2+1)
인 6이니까... 이렇게 쉽고 간단하게, 하지만 멋드러지게 생각해낼 수 있었다니 정말 감탄을 금치 못했다. 나도 이렇게 문제를 효과적으로 풀어낼 수 있도록 알고리즘 공부를 더 해야겠다... 😭
function solution(n) {
var answer = 0;
for(let i=2 ; i<=n ; i+=2)
answer += i;
return answer;
}
내가 푼 방법과 유사하다. 하지만 이 풀이에서는 if
문을 쓰지 않고 for
문에서 i+=2
를 하였다. 내 코드보다 길이가 짧고 가독성이 높다고 생각하며, 나는 왜 문제를 풀 때 이 생각을 하지 못했는지... 쉬운 문제들을 풀고 있기 때문에 Lv.1, Lv.2를 풀 때까지 기초를 더욱 탄탄히 다져가야겠다!