Javascript - level : 0 - 짝수의 합

HS K·2022년 12월 17일
0

문제설명

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

제한사항

0 < n ≤ 1000

내가 쓴 답

function solution(n) {
    if (n % 2 == 0) {
        for (i = 2; i <= n; i = i + 2) {
            let k = 0
            return k += i
        }
    } else if (n % 2 == 1) {
        for (i = 2; i < n; i = i + 2) {
            let k = 0
            return k += i
        }
    }
}

※ 참고로 틀린 답이다. 어디가 틀렸을까?

수정한 답

function solution(n) {
    if (n % 2 == 0) {
        let k = 0
        for (i = 2; i <= n; i = i + 2) {
            k += i
        }
        return k
    }
    else if (n % 2 == 1) {
        let k = 0
        for (i = 2; i < n; i = i + 2) {
            k += i
        }
        return k
	}
}
function solution(n) {
    if (n % 2 == 0) {
        let k = 0
        for (i = 2; i <= n; i = i + 2) {
            k += i
        }
        return k
    }
}

(1) 초기화를 해주기 위한 변수가 어디에서 선언되어야하는지
(2) return은 어디에서 해줘야하는지
이 두개를 잘 이해하고 있어야했다.

여러종류의 풀이 보기

1번

function solution(n) {
    var answer = 0;

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

    return answer;
}

2번

function solution(n) {
    var half = Math.floor(n/2);
    return half*(half+1);
}

후기

반복문을 직관적으로만 이해했었지, 반복문을 직접 써본지가 오래되어 어떻게 쓰는지 감을 잃었다.
그래도 이 문제 덕분에 지역변수와 전역변수의 스코프, 반환, 초기화, 연산자 사용법을 복습할 수 있어서 좋았다.

처음에 당장 써야할때 몇번은 익숙해지는겸 외워서 쓴다고쳐도, 그냥 외우기만하고 이해하지 않은채로 쓰다보면 언젠가는 응용해야하는 순간에 헷갈리게 된다.
역시 기초가 중요하다. 잊지말자.
(알던 것도 까먹으니까 자괴감이 장난 아니다)


복습하기

산술연산자

산술 연산자설명
+왼쪽의 피연산자에 오른쪽의 피연산자를 더함.
-왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌.
*왼쪽의 피연산자에 오른쪽의 피연산자를 곱함.
/왼쪽의 피연산자를 오른쪽의 피연산자로 나눔.

할당 연산자

산술 연산자설명
=변수에 값을 대입하는 데 사용
*=오른쪽 피연산자의 값을 변수에 곱한 결과를 다시 변수에 할당
**=오른쪽 피연산자의 값으로 변수를 거듭제곱한 결과를 다시 변수에 할당
/=오른쪽 피연산자의 값으로 변수를 나눈 결과를 다시 변수에 할당
%=오른쪽 피연산자의 값으로 변수를 나눴을 때의 나머지를 다시 변수에 할당
+=오른쪽 피연산자의 값을 변수에 더한 결과를 다시 변수에 할당

(예시)

let a = 2;
let b = 'hello';

console.log(a += 3); // Addition
// Expected output: 5

console.log(b += ' world'); // Concatenation
// Expected output: "hello world"

증가 및 감소

산술 연산자설명
A++피연산자를 증가(1을 더함)시키고 연산자의 위치에 따라 증가하기 전이나 후의 값을 반환
A--피연산자를 감소(1을 뺌)시키고 연산자의 위치에 따라 감소하기 전이나 후의 값을 반환
++A피연산자를 증가(1을 더함)시키고 연산자의 위치에 따라 증가하기 전이나 후의 값을 반환
--A피연산자를 감소(1을 뺌)시키고 연산자의 위치에 따라 감소하기 전이나 후의 값을 반환
let x = 3;
const y = x++;

console.log(`x:${x}, y:${y}`);
// Expected output: "x:4, y:3"

let a = 3;
const b = ++a;

console.log(`a:${a}, b:${b}`);
// Expected output: "a:4, b:4"

만약 피연산자 뒤에 연산자를 붙여서 사용한다면 (예를 들어 x++) 증가 연산자는 수를 증가시키고, 증가하기 전 값을 반환합니다.

만약 피연산자 앞에 연산자를 붙여서 사용한다면(예를 들어 ++x) 증가 연산자는 수를 증가시키고, 증가 후 값을 반환합니다.

그 외 연산자들
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators

for문

for ([초기문]; [조건문]; [증감문])
문장
profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!

0개의 댓글