본문 바로가기
프론트엔드로 가는 길/프로그래머스

06. 짝수의 합

by woody-j 2022. 11. 2.

※문제설명

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

 

My Solution

function solution(n){
    let even=0;
    for (i=1; i<=n; i++){
        if(i%2==0){
         even += i; //even =even + i의 축약형
        }
    }
    return even;
}
더보기
for문과 복합형 대입 연산자를 사용

For 문

for (변수 선언문 또는 할당문; 조건식; 증감식;) {조건식이 참인 경우 반복 실행될 문;}

for (var i=0; i<2; i++){
console.log(i)
}

for문은 i 변수 (for문의 변수 선언문의 변수 이름은 반복을 의미하는 iteration의 i를 사용하는 것이 일반적)

 

자바스크립트 복합형(축약형) 대입 연산자 사용하기

구문 의미
x = y x = y
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x **= y x = x ** y
x /= y x = x / y
x %= y x = x % y

 

부족한 점 for문을 사용해야한다는 것은 알고 있었지만 for문에 대한 이해 부족으로 조금 해맸다. 그래서 for문에 대해 인터넷으로 먼저 찾아보고 익힌 후에 문제를 다시 풀었다. 처음에는 무작정 인터넷에 나와 있는 코드를 가져다와 쓰면서 코드를 통과했지만, 그것은 완전한 내 풀이가 아니라는 생각이 들어서 이해할 때까지 채점을 하지않았다. 
개선 방안 for문에 대해서 다양한 예제 접해보기 for문 뿐만아니라 다른 반복문 공부하기 

 


 

Different Approach

 

(1) MATH 사용

function solution(n) {
    var half = Math.floor(n/2);
    return half*(half+1);
}
Math.floor(x) 인수와 같거나 작은 수 중에서 가장 큰 정수 반환

 

 

(2) if 문 없이 

 

function solution(n) {
    var answer = 0;

    for(let i=2 ; i<=n ; i+=2)
        answer += i;

    return answer;
}

i가 2부터 시작하고 2씩 증감하기때문에 홀수는 조건식에 false가 나와 애초부터 홀수를 판별하는 if문이 필요 없다.

 

 

(3) Array 사용

function solution(n) {
  return Array(n)
    .fill()
    .map((_, i) => i + 1)
    .filter((v) => v % 2 === 0)
    .reduce((acc, cur) => acc + cur, 0);
}

 

 

 

느낀 점 (3) 번은 아직 이해하기 힘들지만 (1),(2)을 이해하고 충격먹었다. 어떻게 저런 생각을..그리고 너무나도 새로웠고 새로운 걸 알게돼 설렜다. (2)번은 for문에 대한 지식을 조금만 더 가지게 된다면 저런 접근법을 생각할 수 있을 것 같다. 하지만 (1)번의 경우, 간단하면서도 저런 발상이 충격으로 와닿았다. 지금 당장은 어렵겠지만, 저런식으로 접근 할 수 있는 지식을 기르고 싶다.

 

 

 

참고 블로그 :  https://stonefree.tistory.com/105

 

[JavaScript] 자바스크립트 복합형(축약형) 대입 연산자 사용하기

009 _ 자바스크립트 복합형(축약형) 대입 연산자 사용하기 [적용] 계산식을 간략히 나타내고 싶을 때 [내용] 대입할 때 사용하는 기호인 '='는 대입 연산자라고 한다. 이를 응용하여 좌변과 우변의

stonefree.tistory.com

참고 자료 : 모던 자바스크립트 Deep Dive 책

'프론트엔드로 가는 길 > 프로그래머스' 카테고리의 다른 글

08.두 수의 나눗셈 & 양꼬치  (0) 2022.11.04
07. 배열의 평균값  (0) 2022.11.03
05. 각도기  (0) 2022.10.30
04. 숫자 비교하기 & 나이 출력  (0) 2022.10.29
03. 두 수의 차 & 곱  (0) 2022.10.28