728x90
반응형

 

1. 다음의 결과값을 작성하시오.

let num = 0;

    while(false){
        num++;
        if( num == 3 ){
            continue;
        }
        if( num > 10 ){
            break;
        }
    }
    console.log(num);

 

A

:  0

 

while문의 조건이 false로 설정되어 있기 때문에 while문이 실행되지 않는다.

따라서 변수는 0으로 초기화 된 이후 값이 변하지 않는다.

 

 

 

 

 

2. 다음의 결과값을 작성하시오.

let a = 6, b = 9, c = 3, result;
    result = ++a + b++ + ++c;

    console.log(result);
    console.log(a+b+c);

 

A

: 20       21

 

해당 코드를 실행하면 변수 a, b, c가 순서대로 6, 9,3으로 초기화 된다.

그리고 다음 줄에서 변수 result에 ++a + b++ + ++c를 대입한다.

 

여기서 ++a 변수는 a를 1 증가시킨 후 그 값을 사용하므로 7이 되며,

b++는 변수 b를 현재 값인 9를 사용한 후에 1을 증가시키므로, 이항 연산의 결과는 9가 된다.

++c는 변수 c를 1 증가시킨 후 그 값을 사용하므로 4가 됩니다. 따라서 result 변수에는 7 + 9 + 4 = 20이 대입된다.

마지막으로 console.log(a+b+c)를 실행하면, a와 c는 이미 1씩 증가한 상태이므로 각각 7과 4가 되어있다.

b는 이전 연산에서 1 증가했으므로 10이 됩니다. 따라서 console.log(a+b+c)는 7+10+4 = 21을 출력한다.

 

 

 

 

 

3. 결과값을 작성하시오.

function func(){
        let a = [];

        for(i=1; i<=5; i++){
            a += [i];
        }
        console.log(a);
    }
    func();

 

:  1   2  3  4   5

 

해당 코드는 함수 func()를 정의하고, 함수 내에서 빈 배열 a를 선언합니다.

그리고 for 루프를 이용하여 1부터 5까지의 숫자를 배열 a에 추가한다.

그런데 배열에 값을 추가할 때 a += [i];와 같이 문자열 연결 연산자인 +=를 사용했는데, 이는 배열에 값을 추가하는 올바른 방법이 아니다.

올바른 방법은 a.push(i)와 같이 push() 메서드를 사용하는 것이다.

따라서 func() 함수의 실행 결과는 [1, "2", "3", "4", "5"]와 같이 배열의 첫 번째 요소는 숫자 1이지만 나머지 요소는 모두 문자열로 변환되어 들어갑니다. 이는 배열에 값을 추가할 때 문자열 연결 연산자를 사용했기 때문이다.

 

 

 

 

 

4. 결과값을 작성하시오.

let arr = [3,4,1,4,1,3,4,9,8,3];
        
    for(let i=0; i<10; i++){
        if(i % 3 == 2){
            console.log(arr[i]);
        }
    }

    console.log(sum);

:  1    3   8

 

반복문이 실행되면 i는 0부터 9까지 총 10번 반복하게 됩니다. 그리고 각 반복마다 i가 3으로 나누었을 때 나머지가 2인지 검사하게 된다..

배열 arr에서 0번째 원소는 3이며, i=0일 때는 조건식이 false가 되어 아무 동작도 하지 않는다. 

1번째 원소도 마찬가지이다.


2번째 원소는 1이며, i=2일 때 조건식이 true가 된다. 

따라서 console.log(arr[i]) 문장이 실행되어 1이 출력된다.

3번째 원소는 4이며, i=3일 때도 조건식이 false가 되어 아무 동작도 하지 않는다. 

4번째 원소도 마찬가지이다.

5번째 원소는 3이며, i=3일 때 조건식이 true가 된다.

따라서 console.log(arr[i]) 문장이 실행되어 4가 출력된다.

6번째 원소는 4이며, i=5일 때는 조건식이 false가 되어 아무 동작도 하지 않는다.
7번째 원소는 9이며, i=6일 때도 조건식이 false가 되어 아무 동작도 하지 않는다.

8번째 원소는 8이며, i=7일 때 조건식이 true가 돤다.

따라서 console.log(arr[i]) 문장이 실행되어 9가 출력된다.

9번째 원소는 3이므로, i=8일 때는 조건식이 false가 되어 아무 동작도 하지 않는다.

 

 

 

 

5. 결과값을 작성하시오.

function func(num1, num2){
        if(num1 > num2) return num1
        else return num2
    }
    console.log(func(17, 23) + func(50, 40))

 

A

:   73

 

func라는 함수를 정의하고, 해당 함수를 호출한 결과를 출력하는 코드이다.
func 함수는 두 개의 인자 num1과 num2를 받아서, 만약 num1이 num2보다 크다면 num1을, 그렇지 않다면 num2를 반환하는 동작을 한다.
따라서 func(17, 23)의 결과는 23이 되고, func(50, 40)의 결과는 50이 된다.

이 두 값을 더한 결과인 73이 console.log로 출력된다.

 

 

 

 

 

6. 결과값을 작성하시오.

function func(index){
        console.log("함수가 실행되었습니다." + index);
    }
    function callback(num){
        for(let i=0; i<=5; i++){
            num(i);
        }
    }
    callback(func);

 

A  : 

함수가 실행되었습니다. 0

함수가 실행되었습니다. 1

함수가 실행되었습니다. 2

함수가 실행되었습니다. 3

함수가 실행되었습니다. 4

함수가 실행되었습니다. 5

 

 

func 함수는 하나의 인자 index를 받아서, 해당 인자를 문자열과 함께 출력하는 역할을 한다.
callback 함수는 하나의 인자 num을 받아서, 0부터 5까지의 수를 num 함수의 인자로 넘겨준다.

이때 num은 함수이며, 함수를 인자로 받아서 실행하는 고차함수[각주:1]이다.
따라서 callback(func) 코드는 func 함수를 인자로 받아서 실행한다.

 callback 함수에서는 num(i)를 0부터 5까지 반복해서 실행하므로, func 함수는 6번 호출된다.

 

 

 

 

 

7. 결과값을 작성하시오.

 for(let i=1; i<=5; i++){
        console.log(i);

        if(i == 4){
            break;
        }
    }

 

:    1   2   3   4  

 

위 코드는 1부터 5까지의 숫자를 출력하고, 숫자가 4일 때 반복문을 종료하는 코드이다.

for문을 사용하여 i 변수를 1부터 5까지 증가시키면서, 각 i 값을 console.log로 출력한다.

그리고 if문을 사용하여 i가 4일 때, break 키워드를 사용하여 반복문을 종료 시키기 때문에  이후 console.log는 더 이상 실행되지 않는다.

 

 

 

 

 

8. 결과값을 작성하시오.

 const arr = [100, 200, 300, 400, 500];

    const text1 = arr.join("*");
    arr.push("600");
    const text3 = arr.join("");
    arr.pop();
    const text4 = arr.join(" ");

    console.log(text1);
    console.log(text3);
    console.log(text4);

 

A :

100*200*300*400*500
100200300400500600
100 200 300 400 500

 

arr.join("*")은 arr 배열의 각 원소를 * 문자로 연결하여 하나의 문자열로 만든다.

따라서 text1 변수에는 100*200*300*400*500 문자열이 할당된다.

arr.push("600")은 arr 배열의 끝에 600이라는 새로운 원소를 추가한다.

arr.join("")은 arr 배열의 각 원소를 연결하여 하나의 문자열로 만든다.

이때, 구분자를 지정하지 않았기 때문에 원소들이 그대로 이어진 문자열이 만들어진다.

따라서 text3 변수에는 100200300400500600 문자열이 할당됩니다.

arr.pop()은 arr 배열의 마지막 원소를 제거한다. 즉, 600이 제거된다.
arr.join(" ")은 arr 배열의 각 원소를 공백 문자로 연결하여 하나의 문자열로 만든다. 

따라서 text4 변수에는 100 200 300 400 500 문자열이 할당된다.

 

 

 

 

 

 

9. 다음의 결과값을 작성하시오.

 let a, b = 10;

    for(let i=0; i<5; i++){
        a = i;
        b -= a;
    }
    console.log(a, b)

 

:    4     0

 

 a 변수는 초기화되지 않았기 때문에 undefined 값이 할당되고, b 변수는 10으로 초기화 된다..

for문에서는 i 변수를 0부터 4까지 1씩 증가시키면서, a 변수에 i 값을 할당하고, b 변수에서 a 값을 빼준다.

즉, b 변수는 10에서 0, 1, 3, 6, 10을 차례로 빼면서 0이 된다,
따라서 console.log(a, b)를 실행하면 마지막 반복에서 a 변수에는 4가, b 변수에는 0이 할당되어 출력된다.

 

 

 

 

 

10. 다음의 결과값을 작성하시오.

function func(){
        let i = 10, j = 20, k = 30;
        i /= j;
        j -= i;
        k %= j;

        console.log(i);
        console.log(j);
        console.log(k);
    }
    func();

 

:  0.5     19.5     10.5 

 

i /= j; 

: i 변수의 값을 j 변수의 값으로 나눈 결과를 i 변수에 할당한다. 

이 때, /= 연산자는 i = i / j;와 같다.

따라서 i 변수의 값은 0.5가 된다.

j -= i; 

: j 변수의 값을 i 변수의 값으로 뺀 결과를 j 변수에 할당한다.

이 때, -= 연산자는 j = j - i;와 같다.

따라서 j 변수의 값은 19.5가 된다.

k %= j; 

: k 변수의 값을 j 변수의 값으로 나눈 나머지를 k 변수에 할당한다.

이 때, %= 연산자는 k = k % j;와 같습니다. 따라서 k 변수의 값은 10.5가 된다.

 

 

 

 

 

11. 다음의 결과값을 작성하시오.

let k = 2;
    let temp;
    for(let i=0; i<=3; i++){
        temp = k;
        k++;
        console.log(temp + "번");
    }

 

A

:  2번    3번     4번      5번

 

 let 키워드로 선언된 변수 k와 temp는 각각 2와 undefined로 초기화 된다.
for문에서는 i 변수를 0부터 3까지 1씩 증가시키면서, temp 변수에 k 값을 할당하고, k 값을 1 증가시킨 후 temp + "번"을 출력한다.
따라서 console.log 구문은 3번 실행되며, 각각 "2번", "3번", "4번", "5번"을 출력한다.

 

 

 

 

 

12.  다음의 결과값을 작성하시오.

let num = 10;
    num += 2;
    num -= 3;
    num *= 5;
    num /= 5;
    num %= 9;
    
    console.log(num)

 

: 0

 

let 키워드로 선언된 변수 num은 10으로 초기화 된다.

다음으로 num += 2;를  수행하면 num 변수의 값은 12가 된다.

num -= 3;를 수행하면 num 변수의 값은 9가 되며,
num *= 5;를 수행하면 num 변수의 값은 45가 된다.
num /= 5;를 수행하면 num 변수의 값은 9가 되며,
num %= 9;를 수행하면 num 변수의 값은 0이 된다.

이 때, %= 연산자는 num = num % 9;와 같다.
따라서 console.log 구문은 0을 출력합니다.

 

 

 

 

 

 

 

 

13. 다음의 결과값을 작성하시오.

let num = [1, 5, 1, 2, 7, 5];
    for(let i=0; i<6; i++){
        if((i+2) % 2 == 0){
            console.log(num[i]);
        }
    }

 

A

:   1     1       7

 

배열 num은 [1, 5, 1, 2, 7, 5]로 초기화 된다.
for문에서는 i 변수를 0부터 5까지 1씩 증가시키면서, (i+2) % 2 == 0 조건을 검사한다.

여기서 (i+2) % 2의 값은 항상 0이므로, if 구문 내의 코드는 항상 실행된다.

따라서 console.log 구문은 6번 실행되며, num 배열에서 0번 인덱스, 2번 인덱스, 4번 인덱스의 값인 1, 1, 7을 차례대로 출력한다.

 

 

 

 

 

 

14. 다음의 결과값을 작성하시오.

let num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    for(let i=0; i<=9; i++){
        switch(num[i] % 2){
            case 1:
                console.log(num[i]);
                break;
            default:
                console.log("**");
        }
    }

 

:   **1**3**5**7**9

 

배열 num은 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]로 초기화된다.

for문에서는 i 변수를 0부터 9까지 1씩 증가시키면서, switch문을 실행한다.

switch문에서는 num[i] % 2의 값에 따라서 case문이 실행한다.
num[i] % 2가 1인 경우: case 1문이 실행되며, 이 경우 console.log(num[i])이 실행되어 배열 num에서 홀수를 출력한다.

num[i] % 2가 0인 경우: default문이 실행되어  이 경우 console.log("**")이 실행되어 **로 출력한다.

 

 

 

 

 

15. 다음의 결과값을 작성하시오.

  let cnt = 0;
    let sum = 0;
    for(let i=0; i<=7; i++){
        if(i%2 == 1){
            cnt++;
            sum += i;
        }
    }
    console.log(cnt + ", "+sum/2);

 

:   4    8

 

for문에서는 0부터 7까지의 정수를 반복하며, if문에서는 현재 정수(i)가 홀수인지를 확인한다.

만약 현재 정수(i)가 홀수라면 cnt 변수를 1 증가 시키고(cnt++) sum 변수에 현재 정수(i)를 더한다. (sum = sum+i)

 

그러나 console.log에서 sum을 2로 나누므로 홀수의 갯수인 4와 1+3+5+7=16/2인 8이 출력된다.

 

 

 

 

 

 

16. 다음의 결과값을 작성하시오.

let data = [70, 80, 75, 60, 90];
    let best = 1;
    let score = 0;

    for(let i=0; i<data.length; i++){
        if(data[i]>=80) {
            best++;
        }
        if(score < data[i]) {
            score = data[i];
        }
    }

    console.log(best, score)

 

:    3       90

 

주어진 데이터에서 80 이상의 수와 가장 높은 수를 출력하는 코드이다.

반복문을 통해 주어진 데이터를 모두 검사하면서, 80 이상의 수가 몇 개인지 best 변수에 누적한다. 

또한, score 변수에는 현재까지 가장 높은 수를 저장한다.

따라서, 주어진 데이터 [70, 80, 75, 60, 90]에서 80점 이상의 수는 2이고, 가장 높은 수는 90이다.

그러나 best의 초깃값이 1이므로 1+2가 되어 best에서는 3이 score에서는 90이 출력된다.

 

 

 

 

 

 

17. 다음의 결과값을 작성하시오.

 let a, b, result;
    a = 7, b = 4
    result = a | b;

    console.log(result)

 

A

:   7 (0111)

 

변수 a는 7(2진수로 111)이고, 변수 b는 4(2진수로 100)이다.

a | b 연산은 각 비트에 대해 OR 연산을 수행한다.

따라서 결과는 111 | 100이 되며, 이는 7과 4를 비트 OR한 결과인 7이 된다.

 

 

 

 

18. 다음의 결과값을 작성하시오.

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));

 

A

: YES

 

함수 solution에서는 먼저 answer 변수를 YES로 초기화 한다.

그리고 세 수 a, b, c를 모두 더한 값을 tot 변수에 저장한다.

a=53, b=93, c=107이므로 total = a+b+c = 253이다.

다음으로 세 수 a, b, c 중에서 가장 큰 값을 max 변수에 저장한다.

셋 중 가장 큰 값은 c, 즉 107이므로 total-max=146이 된다.

마지막으로  if(total-max <= max)문에서 total-max 값이 max 값보다 크므로 anwser 변수가 YES로 변경된다.

따라서 solution(53,93,107)은 YES를 반환한다.

 

 

 

 

 

19.다음의 결과값을 작성하시오.

 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));

 

: 11

 

if(a < b) 구문에서 a와 b 중에서 작은 값을 answer 변수에 할당한다.
다음으로, if(c <= answer) 구문에서 c가 answer보다 작거나 같은 경우 answer 변수에 c를 할당한다.
마지막으로 answer 값을 반환한다.

solution(15, 12, 11)을 호출하면, a=15, b=12, c=11로 전달되므로, answer 변수에는 12가 할당된다.

이후, if(c <= answer) 구문에서는 11이 12보다 작으므로, answer 변수에 11이 할당된다.

따라서, 최종적으로 solution() 함수는 11을 반환합니다.

 

 

 

 

 

20. 다음의 결과값을 작성하시오.

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

 

이 함수는 day 변수로 주어진 수와 일의 자리가 일치하는 arr 배열 내의 요소 수를 반환한다.

위 코드에서는 0과 일의 자리가 0인 수의 개수를 세는 것이다.

함수 내에서는 for-of 반복문을 사용하여 arr 배열의 각 요소 x에 대해 다음을 수행한다.

x를 10으로 나눈 나머지가 day와 같으면, answer를 1 증가시킨다.
반복문이 끝나면, answer 변수에는 일의 자리가 day와 일치하는 arr 배열의 요소 수가 저장되어 있다.

마지막으로 answer 값을 반환한다.



 

 

 

 

 

 

  1. 함수를 인자로 받거나, 함수를 반환하는 함수를 말한다. [본문으로]

+ Recent posts