Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

Leeyanggoo

[오답노트] 눈을 뜨십시오 휴-먼 본문

2023/오답노트

[오답노트] 눈을 뜨십시오 휴-먼

Leeyanggoo 2023. 4. 28. 11:36

01. 다음의 결괏값을 작성하시오.

{
    let i = 0;
    let sum = 0;
    
    while(i < 10){
        i = i+1;
        if( i % 4 == 0) sum -= i;
        if( i % 4 == 1) sum += i;
        if( i % 4 == 2) sum *= i 
    }

    console.log(sum) 
}
더보기

i = 1, sum = 0 + 1 = 1 (i % 4 == 1)
i = 2, sum = 1 * 2 = 2 (i % 4 == 2)
i = 3, sum = 2 (i % 4 == 3, 조건에 해당하지 않음)
i = 4, sum = 2 - 4 = -2 (i % 4 == 0)
i = 5, sum = -2 + 5 = 3 (i % 4 == 1)
i = 6, sum = 3 * 6 = 18 (i % 4 == 2)
i = 7, sum = 18 (i % 4 == 3, 조건에 해당하지 않음)
i = 8, sum = 18 - 8 = 10 (i % 4 == 0)
i = 9, sum = 10 + 9 = 19 (i % 4 == 1)
i = 10, sum = 19 * 10 = 190 (i % 4 == 2)

출력 : 190

 

네 눈에는 sum이 0으로 선언된 게 안 보이느냐?


07. 다음의 결괏값을 작성하시오.

{
    let num = [3, 4, 5, 7, 8];
    let temp;

    for(let i=0; i<=3; i++){
        for(let j=i+1; j<=4; j++){
            if(num[i] < num[j]){
                temp = num[i];
                num[i] = num[j];
                num[j] = temp;
            }
        }
    }

    console.log(num);
}
더보기

코드의 연산 과정은 다음과 같습니다:

  1. 초기 배열: [3, 4, 5, 7, 8]
  2. i = 0일 때:
    • j = 1: num[0] < num[1] → 3 < 4 → 교환 → [4, 3, 5, 7, 8]
    • j = 2: num[0] < num[2] → 4 < 5 → 교환 → [5, 3, 4, 7, 8]
    • j = 3: num[0] < num[3] → 5 < 7 → 교환 → [7, 3, 4, 5, 8]
    • j = 4: num[0] < num[4] → 7 < 8 → 교환 → [8, 3, 4, 5, 7]
  3. i = 1일 때:
    • j = 2: num[1] < num[2] → 3 < 4 → 교환 → [8, 4, 3, 5, 7]
    • j = 3: num[1] < num[3] → 4 < 5 → 교환 → [8, 5, 3, 4, 7]
    • j = 4: num[1] < num[4] → 5 < 7 → 교환 → [8, 7, 3, 4, 5]
  4. i = 2일 때:
    • j = 3: num[2] < num[3] → 3 < 4 → 교환 → [8, 7, 4, 3, 5]
    • j = 4: num[2] < num[4] → 4 < 5 → 교환 → [8, 7, 5, 3, 4]
  5. i = 3일 때:
    • j = 4: num[3] < num[4] → 3 < 4 → 교환 → [8, 7, 5, 4, 3]

모든 반복이 완료되면 정렬된 배열은 [8, 7, 5, 4, 3]이 됩니다. 이 배열이 출력됩니다.

 

for문 안에 for문이 있으면 뭐다?


08. 다음의 결괏값을 작성하시오.

{
    let num = [1,2,3,4,5];
    let sum = 1;
    
    function func(arr){
        for(let i=0; i<arr.length; i++) {
            sum += arr[i];
        }

        for(let i=0; i<arr.length; i++){
            if(arr[i] % 2 == 0) sum -= arr[i];
        }
        return sum;            
    }

    console.log(func(num));
}
더보기

이 코드의 연산 과정은 다음과 같습니다:

  1. 배열 num을 선언하고 초기값으로 [1, 2, 3, 4, 5]를 할당합니다.
  2. 변수 sum을 선언하고 초기값으로 1을 할당합니다.
  3. 함수 func를 정의합니다. 이 함수는 주어진 배열에 대해 다음 작업을 수행합니다:
    • 배열의 모든 원소를 sum에 더합니다.
    • 배열의 짝수 원소를 sum에서 뺍니다.
    • 최종적으로 계산된 sum을 반환합니다.
  4. 함수 func에 배열 num을 인자로 전달하고, 결과를 출력합니다.

다음은 연산 과정의 자세한 설명입니다:

  1. 함수 func에 배열 [1, 2, 3, 4, 5]가 전달됩니다.
  2. 첫 번째 for 반복문에서 배열의 모든 원소를 sum에 더합니다:
    • sum = 1 + 1 = 2
    • sum = 2 + 2 = 4
    • sum = 4 + 3 = 7
    • sum = 7 + 4 = 11
    • sum = 11 + 5 = 16
  3. 두 번째 for 반복문에서 배열의 짝수 원소를 sum에서 뺍니다:
    • sum = 16 - 2 = 14 (2는 짝수)
    • sum = 14 - 4 = 10 (4는 짝수)
  4. 함수 func는 최종 계산된 sum인 10을 반환합니다.
  5. 출력 값은 10입니다.

 

arr 뒤에 붙는 대괄호는 장식이 아니다.


09. 다음의 결괏값을 작성하시오.

{
    let num = ["0","1","2","3","4","5","6","7","8","9"];
    let sum = 100;

    for(let i=0; i<num.length; i++){
        num[i] = i+1;
    }
    for(let i=0; i<num.length; i++){
        if(i % 3 == 1){
            sum -= num[i];
        }
    }
    console.log(sum)
}
더보기

이 코드의 연산 과정은 다음과 같습니다:

  1. 배열 num을 선언하고 초기값으로 문자열 형태의 숫자들을 할당합니다: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
  2. 변수 sum을 선언하고 초기값으로 100을 할당합니다.
  3. 첫 번째 for 반복문에서 배열 num의 각 원소를 숫자형으로 변경하고 1씩 더해줍니다:
    • num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  4. 두 번째 for 반복문에서 배열 num의 원소 중 인덱스가 3으로 나누어 떨어지지 않고 1이 남는 원소를 sum에서 뺍니다:
    • sum = 100 - 2 (i = 1) = 98
    • sum = 98 - 5 (i = 4) = 93
    • sum = 93 - 8 (i = 7) = 85
  5. 출력 값은 85입니다.

num뒤에 붙는 대괄호는 장식이 아니다.


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

{
    let arr = [1,2,3,4,5];
    let temp = [1,2,4,6,8];
    let idx = 0;
    let flag = true;

    for(let i=0; i<arr.length; i++){
        flag = false;
        if(arr[i] == temp[i]){
            flag = true;
        }
        if(!flag){
            temp[idx] = arr[i];
            console.log(temp[idx]);
        }
    }
}
더보기

이 코드의 연산 과정은 다음과 같습니다:

  1. 두 개의 배열 arr와 temp를 선언하고 초기값을 할당합니다:
    • arr = [1, 2, 3, 4, 5]
    • temp = [1, 2, 4, 6, 8]
  2. 변수 idx를 선언하고 초기값으로 0을 할당합니다.
  3. 변수 flag를 선언하고 초기값으로 true를 할당합니다.
  4. for 반복문에서 배열 arr의 원소와 temp의 원소를 비교합니다:
    • i = 0: arr[0] == temp[0] → 1 == 1 → flag = true, 출력되지 않음
    • i = 1: arr[1] != temp[1] → 2 != 2 → flag = false, temp[0] = 2, 출력: 2
    • i = 2: arr[2] != temp[2] → 3 != 4 → flag = false, temp[1] = 3, 출력: 3
    • i = 3: arr[3] == temp[3] → 4 == 4 → flag = true, 출력되지 않음
    • i = 4: arr[4] != temp[4] → 5 != 8 → flag = false, temp[2] = 5, 출력: 5

코드 실행 도중 출력되는 값들은 2, 3, 5입니다.

 

눈을 뜨고 console.log의 위치를 보도록 해라.


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

{
    let x = 1;

    console.log( !(x>0) );
    console.log( x>0 || x<4 );
    console.log( x<<2 );
    console.log( x&2 );
    console.log( x%3 );
}
더보기

&는 AND 연산자로 두 값이 1인 경우 1을 반환합니다...

그럼 반대는 뭐다?


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

{
    let result = 0;
    for(let i=1; i<999; i++){
        if(i%3==0 && i%2 !=0){
            result = i;
        }
    }
    console.log(result);
}
더보기

맞췄던 문제를 틀리면... 에휴

 

이 코드의 연산 과정은 다음과 같습니다:

  1. 변수 result를 선언하고 초기값으로 0을 할당합니다.
  2. 1부터 998까지 for 반복문을 수행하며, 반복 변수 i가 3의 배수이고 2의 배수가 아닌 경우 result에 값을 할당합니다. (홀수인 3의 배수)
  3. 반복문이 끝나면 최종적으로 result에 할당된 값을 출력합니다.

코드 실행 결과 출력되는 값은 999보다 작은 가장 큰 홀수인 3의 배수인 999 - 6 = 993입니다.