Post

테스트 오답 노트

01) 1번째 문제


다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
{
        let a, b, result;
        a = 7, b = 4
        result = a | b;
    
        console.log(result)
}   


1
let a, b, result;
  • let 키워드는 변수를 선언할 때 사용됩니다.
    이 코드에서는 a, b, result 세 개의 변수를 선언하고 있습니다.
    a와 b는 연산에 사용될 숫자들을 저장하고, result는 연산의 결과를 저장할 변수입니다.


1
a = 7, b = 4
  • 여기서는 변수 a에 7을, b에는 4를 할당합니다. 이 두 값은 이어지는 비트 연산의 입력으로 사용됩니다


1
result = a | b;
  • 비트 OR 연산자(|)를 사용하여 a와 b의 각 비트를 OR 연산합니다. 7의 이진 표현은 0111이고, 4의 이진 표현은 0100입니다. 두 수의 OR 연산 결과는 0111이며, 이는 십진수로 7입니다.

💡 왜 2진수로 표현했을까? 코드에서 이진 표현을 언급한 것은, 비트 OR 연산이 이진수 단위로 작동하기 때문!


1
console.log(result)
  • console.log(result)는 계산된 결과를 콘솔에 출력합니다. 여기서는 result 변수에 저장된 값인 7이 출력됩니다.


정답
7


02) 2번째 문제


다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  function solution(a, b, c){
                let answer = "YES", max;
                let total = a + b + c;
        
                if(a > b) max = a;
                else max = b;
                if(c > max) max = c;
                if(total-max <= max) answer = "NO"; 
                
                return answer;
        }
    
        console.log(solution(53, 93, 107));
}


1
function solution(a, b, c){
  • solution이라는 이름의 함수를 선언하고 있으며, 이 함수는 세 개의 인자 a, b, c를 받습니다. 이 인자들은 비교할 숫자들입니다.


1
let answer = "YES", max;
  • 두 개의 지역 변수 answer와 max를 선언합니다.
    answer는 초기 값으로 “YES”를 할당받으며, 이 값은 함수의 최종 반환 값으로 사용될 예정입니다.
    max는 세 수 중 가장 큰 수를 저장하기 위한 변수로, 초기에는 특정 값으로 설정되지 않습니다.
상세 풀이
- let: 이 키워드는 JavaScript에서 새로운 변수를 선언할 때 사용됩니다.
let으로 선언된 변수는 블록 스코프를 가지며, 선언된 블록과 그 하위 블록에서만 접근 가능합니다.

- answer: 이 변수는 문자열 "YES"를 초기 값으로 가집니다.
이는 함수의 로직을 통해 조건에 따라 변경될 수 있는 "결과"를 저장하는 데 사용됩니다.
기본적으로는 모든 조건을 만족한다고 가정("YES")하고 시작합니다.

- max: 이 변수는 세 개의 입력 중 가장 큰 값을 찾기 위해 사용됩니다.
초기에는 값을 할당하지 않고 선언만 합니다.
이후 코드에서는 a, b, c 중 가장 큰 값이 이 변수에 저장됩니다.

이 줄의 목적은 answer 변수에 삼각형 조건을 만족하는지의 결과를 저장하고, max 변수를 통해 입력된 세 수 중 가장 큰 수를 추적하는 것입니다.
answer는 함수의 반환 값으로 사용되며, 초기에 "YES"로 설정된 후 특정 조건에서 "NO"로 변경될 수 있습니다.


1
let total = a + b + c;
  • total 변수를 선언하고, 세 숫자 a, b, c의 합을 저장합니다.


1
2
if(a > b) max = a;
else max = b;
  • a와 b를 비교하여 더 큰 값을 max 변수에 저장합니다.


1
if(c > max) max = c;
  • c가 현재 max보다 크다면 max를 c로 업데이트합니다. 이로써 max는 a, b, c 중 가장 큰 값이 됩니다.


1
if(total-max <= max) answer = "NO";
  • total - max는 가장 긴 변을 제외한 두 변의 합을 계산합니다.
    만약 이 값이 가장 긴 변의 길이보다 작거나 같다면, 삼각형의 조건을 만족하지 않으므로 answer를 “NO”로 변경합니다.
    하지만 이 경우, 두 변의 합이 가장 긴 변보다 크므로 answer는 “YES”로 유지됩니다.


1
return answer;
  • 최종적으로 answer를 반환합니다.
    이 값은 “YES” 또는 “NO”일 수 있으며, 입력된 세 값이 삼각형의 변으로 사용될 수 있는지 여부를 나타냅니다.


1
console.log(solution(53, 93, 107));
  • solution 함수를 호출하며, 인자로 53, 93, 107을 넘깁니다.
    함수는 이 값을 처리하고, 삼각형을 형성할 수 있는지 검사한 뒤, 결과로 “YES”를 출력합니다.


정답 YES


03) 3번째 문제


다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
{
  function solution(a, b, c){
                let answer;
                if(a < b) answer = a;
                else answer = b;
                if(c <= answer) answer = c; 
                return answer;
        }
        console.log(solution(15, 12, 11));
}
1
function solution(a, b, c){
  • solution 함수를 선언하고, 세 개의 매개변수 a, b, c를 받습니다.
    이 변수들은 비교할 수들입니다.


1
let answer;
  • answer라는 변수를 선언합니다. 이 변수는 가장 작은 수를 저장하기 위해 사용됩니다. 초기에는 값을 할당하지 않습니다.


1
2
if(a < b) answer = a;
else answer = b;
  • 두 수 a와 b를 비교합니다. a가 b보다 작다면 answer에 a를 저장하고, 그렇지 않다면 answer에 b를 저장합니다. 이 시점에서 answer는 a와 b 중 작은 수를 가지고 있습니다.


1
if(c <= answer) answer = c;
  • 다음으로 c와 현재 answer에 저장된 값(이미 a와 b 중 작은 값)을 비교합니다.
    c가 answer보다 작거나 같다면 answer를 c로 업데이트합니다.
    이로써 answer는 세 수 중 가장 작은 값이 됩니다.


1
return answer;
  • answer를 반환합니다. 이 값은 세 수 중 가장 작은 수입니다.


1
console.log(solution(15, 12, 11));
  • solution 함수를 호출하며, 인자로 15, 12, 11을 넘깁니다. 이 함수는 세 수 중 가장 작은 수를 찾아 반환하고, 이 값(11)을 콘솔에 출력합니다.


정답
11


04) 4번째 문제


다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
11
12
{
        function solution(day, arr){
                let answer = 0;
                for(let x of arr){
                        if(x % 10 == day) answer++;
                }
                return answer;
        }
        
        arr = [25, 23, 11, 47, 53, 17, 33, 40];
        console.log(solution(0, arr));
}


1
    function solution(day, arr){
  • solution이라는 이름의 함수를 선언합니다. 이 함수는 두 개의 매개변수 day와 arr를 받습니다. day는 일의 자리 숫자를 나타내고, arr는 검사할 숫자들의 배열입니다.


1
        let answer = 0;
  • answer 변수를 선언하고 0으로 초기화합니다.
    이 변수는 조건을 만족하는 요소의 개수를 카운트하는 데 사용됩니다.


1
for(let x of arr){
  • for…of 루프를 사용하여 배열 arr의 각 요소 x에 대해 반복 실행합니다.


1
if(x % 10 == day) answer++;
  • 배열의 각 요소 x를 10으로 나눈 나머지를 계산하여 day와 비교합니다.
    이 조건은 x의 일의 자리 숫자가 day와 일치하는지 검사합니다.
    일치한다면 answer 값을 1 증가시킵니다.


1
return answer;
  • answer 값을 반환합니다. 이 값은 배열에서 day와 일의 자리 숫자가 일치하는 요소의 수입니다.


1
2
arr = [25, 23, 11, 47, 53, 17, 33, 40];
console.log(solution(0, arr));
  • 배열 arr을 정의하고, 여러 숫자를 요소로 포함합니다.
  • solution 함수를 호출하면서 day로 0을, arr로 위에서 정의한 배열을 전달합니다. 함수는 배열에서 0으로 끝나는 숫자들의 개수를 찾아 그 수를 출력합니다.
    이 경우 배열 내에서 0으로 끝나는 숫자는 40 하나뿐이므로 출력 결과는 1이 됩니다.


결과값 1


05) 5번째 문제


다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
{
        let a, b, result;
        a = 7, b = 4
        result = a & b;
    
        console.log(result);
}


1
let a, b, result;
  • let 키워드를 사용하여 세 개의 변수 a, b, result를 선언합니다.
    a와 b는 연산에 사용될 숫자들을 저장하며, result는 연산의 결과를 저장할 변수입니다.


1
a = 7, b = 4
  • 변수 a에는 숫자 7이, b에는 숫자 4가 할당됩니다.
    이 두 수는 비트 AND 연산의 입력으로 사용될 것입니다.


1
result = a & b;
  • 비트 AND 연산자(&)는 두 숫자의 각 비트를 비교하여, 두 비트 모두 1일 경우 결과의 해당 위치에 1을 반환합니다.
  • 7의 이진수는 0111, 4의 이진수는 0100입니다.
    두 이진수를 AND 연산하면 0100이 되며, 이는 십진수로 4입니다.


1
console.log(result);
  • console.log(result)는 계산된 결과를 콘솔(또는 터미널)에 출력합니다.
    이 경우 result 변수의 값을 출력하여, AND 연산의 결과를 확인할 수 있습니다.
    출력 결과는 4입니다.


정답 4


06) 6번째 문제


다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
{
        let a = 6, b = 9, c = 3, result;
        result = ++a + b++ + ++c;
    
        console.log(result);
        console.log(a+b+c);
} 


1
 let a = 6, b = 9, c = 3, result;
  • let 키워드로 변수 a, b, c, result를 선언하고, a에는 6, b에는 9, c에는 3이 할당됩니다. result는 결과값을 저장할 변수입니다.


1
result = ++a + b++ + ++c;
  • 이 표현식은 여러 증감 연산자를 포함하고 있습니다.
  • ++a: 전위 증감 연산자는 a의 값을 먼저 1 증가시킨 후, 표현식에서 사용합니다. 따라서 이 시점에서 a는 7이 됩니다.
  • b++: 후위 증감 연산자는 표현식에서 b의 현재 값을 사용한 후, b의 값을 1 증가시킵니다.
    따라서 표현식에서 b는 9로 계산되고, 연산이 끝난 후 b는 10이 됩니다.
  • ++c: 전위 증감 연산자는 c의 값을 먼저 1 증가시킨 후, 표현식에서 사용합니다. 따라서 이 시점에서 c는 4가 됩니다.
    위 연산에 따라 result에 저장되는 값은 7 + 9 + 4 = 20입니다.


1
console.log(result);
  • console.log(result)는 계산된 result의 값을 콘솔에 출력합니다. 출력 결과는 20입니다.


1
console.log(a+b+c);
  • console.log(a+b+c)는 변경된 a, b, c의 합을 출력합니다.
  • a는 7, b는 10, c는 4이므로 합은 7 + 10 + 4 = 21입니다.


정답 20, 21


07) 7번째 문제

다음을 보고 결괏값을 작성하시오!

1
2
3
4
5
6
7
8
9
10
{
        let num = 10;
        num += 2;
        num -= 3;
        num *= 5;
        num /= 5;
        num %= 9;
        
        console.log(num)
}


1
        let num = 10;
  • 변수 num을 선언하고 10으로 초기화합니다.


1
num += 2;

-num에 2를 더합니다. num의 값은 이제 12입니다


1
num -= 3;
  • num에서 3을 뺍니다. num의 값은 이제 9입니다


1
num *= 5;
  • num에 5를 곱합니다. num의 값은 이제 45입니다.


1
num /= 5;
  • num을 5로 나눕니다. num의 값은 이제 9입니다.


1
num %= 9;
  • num을 9로 나눈 나머지를 계산합니다. num의 값은 이제 0입니다 (9 % 9 = 0).


1
console.log(num)
  • console.log(num)은 계산된 num의 값을 콘솔에 출력합니다. 출력 결과는 0입니다.


정답 0


This post is licensed under CC BY 4.0 by the author.