231109 TIL

chillakilla·2023년 11월 9일

짝수의 합

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

입출력 예


솔루션 코드

<script>
function solution(n) {
  let answer = 0;
  for (let i = 0; i <= n; i++) {
    if (i % 2 === 0) {
      answer += i;
    }
  }
  return answer;
}
</script>
  • for 문을 돌린다.
  • i = 0 에서부터 시작하고,
  • i <= n; 입력 받은 정수 n보다 작거나 같을 때까지,
  • i++ 하나씩 늘어나면서 반복시킨다.
  • 그때,
  • 만약 i 를 2로 나눈 후, 나머지 값이 0 과 같다면,
  • answer 에 i 를 더하고 그 값을 다시 변수로 할당시킨다.
  • 결과값 반환.

코드 개선

<script>
let solution2 = n => {
  let answer = 0;
  for (let i = 2; i <= n; i += 2) answer += i;
  return answer;
};
</script>

그리고 Math.floor를 이용한 솔루션도 있었다.

<script>
let solution1 = n => {
  let answer = Math.floor(n / 2);
  return answer * (answer + 1);
};
</script>

어렵지만 훨씬 간단하고 효율적이다.

Math.floor() 함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환합니다.
Math.floor(x)

입력 받은 정수를 2로 나눈 후, answer에 할당시키고
그 answer 에 (answer +1) 을 곱하여 반환.

만약 n = 10 이면
5 x (5+1) = 30

만약 n = 4 라면
2 x (2+1) = 6

이건 수학적인 머리가 좀 되어줘야 하는 느낌을 받는다...

profile
꾸준하려 하는 쉽덕놈

0개의 댓글