Post

26일 시험 오답노트 1-1

오답노트

매주 금요일에 시험본 문제들을 하나씩, 그리고 한줄씩 정리합니다! 오답노트라고 적혀있긴 하지만 맞췄던 문제들도 복습한다는 생각으로 같이 정리해서 주말동안에 나눠서 올릴 예정입니다.

첫번째 문제의 값 구하기

아래의 문제에서는 a의 값을 구하는 문제입니다.

1
2
3
4
5
6
7
8
9
 function func() {
    let a = [];

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

문제 풀이

let a =[] 와 for

  • a의 변수를 빈 배열에 선언하며 이때 a의 값은 for문의 결과값이 넣어집니다. for문에서는 아래의 조건식이 만족할때까지 반복하게 되며 값을 a 배열에 추가합니다.

조건식 반복문

  • i = 1: i의 값은 1부터 시작합니다.
  • i <= 5: i의 값이 5보다 작거나 같을 때까지 조건문을 실행합니다.
  • i++: 조건이 충족될떄까지 조건문이 끝날 때마다 i의 값이 1씩 증가합니다.

정답

  • 조건문이 1부터 5까지 실행되었기 때문에, 최종 a 배열의 값은 [1, 2, 3, 4, 5]입니다.

두번째 문제의 값 구하기

아래의 문제에서는 text1, text3, text4의 출력값을 구해야합니다.

1
2
3
4
5
6
7
8
9
 const arr = [100, 200, 300, 400, 500];

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

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

문제 풀이

join

  • join은 배열 사이에 값을 추가할때 사용됩니다. 위에서는 text1, text3, text4 각각에 값을 추가하기 때문에 어떠한 값이 추가되는지 잘 살펴봐야 합니다.

값 추가하기

  • text1: arr의 배열 안에 __*__이 추가됩니다.
  • text3: “” 빈 문자열이 추가되어 배열이 쉼표와 공백 없이 출력됩니다.
  • text4: 빈 문자열 안에 공백이 있어 출력되었을때 공백이 추가되어 나옵니다.

정답

1
2
3
const text1 = 100*200*300*400*500
const text3 = 100200300400500
const text4 = 100 200 300 400 500

세번째 문제의 값 구하기

아래의 문제에서는 a와 b의 출력값을 구해야합니다.

1
2
3
4
5
6
7
 let a, b = 10;

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

문제 풀이

a와 b의 초기값

  • a와 b의 초깃값은 10으로 선언되었습니다.

조건식 반복문

  • 조건식: i는 0부터 시작되며 i의 값이 5보다 작아야 합니다. 그리고 조건이 충족될떄까지 조건문이 끝날 때마다 i의 값이 1씩 증가합니다.
  • {}: 조건이 맞을때마다 안에 들어가서 실행합니다.
  • a의 값 변경: a의 값은 i의 값으로 변경됩니다. 첫번쨰 실행에서는 i가 0부터 실행되기 떄문에 a의 값은 0이 됩니다.
  • b의 값 변경: b의 값에 a의 값을 뺴야합니다. 첫번쨰 실행에서는 a가 0이기 때문에 b의 값은 변경되지 않습니다.
  • 반복문: i의 값이 5와 같아지기 전까지 반복되며 a의 값이 증가됨에 따라 b의 값은 감소되어 저장됩니다.

과정과 정답

1
2
3
4
5
6
7
a = 0; b = 10;
a = 1; b = 9;
a = 2; b = 7;
a = 3; b = 4;
a = 4; b = 0;

4 0

네번째 문제의 값 구하기

아래의 문제에서는 a와 b의 출력값을 구해야합니다.

1
2
3
4
5
6
7
8
9
10
11
 function func() {
    let i = 20, j = 20, k = 30;
    i /= j;
    j -= i;
    k %= j;

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

문제 풀이

i, j, k의 초깃값

  • i, j는 20, k는 30이 선언되었습니다.

계산식

  • i /= j: i와 j를 나눈 값을 i에게 저장합니다. 따라서 i의 값은 1이 됩니다.
  • j -= i: 간단한 뺄쌤이며 계산이 끝난 값이 j에게 저장됩니다. 따라서 j의 값은 19가 됩니다.
  • k %= j: k와 j를 나눈값의 나머지를 k에게 저장합니다. 따라서 k의 값은 11이 됩니다.

정답

1
2
3
i = 1
j = 19
k = 11

다섯번째 문제의 값 구하기

아래의 문제에서는 a와 b의 출력값을 구해야합니다.

1
2
3
4
5
6
7
let k = 1;
    let temp;
    for (let i = 0; i <= 3; i++) {
        temp = k;
        k++;
        console.log(temp + "");
    }

문제 풀이

k와 temp의 초기값

  • k는 1로 선언되어있으며 temp는 아직 선언되지 않았습니다.

계산식

  • i = 0: i는 0부터 시작되며 3보다 작거나 값이 같을때 조건문이 끝납니다. 또한 조건이 충족되어 더이상 실행이 되지 않을때 까지 조건문이 끝날 때마다 i의 값이 1씩 증가합니다.
  • temp = k: k의 값이 temp에 저장 됩니다.
  • k++: 조건문이 끝날 때마다 k의 값이 1씩 증가합니다. 초깃값이 1로 시작하기에 4번 반복될경우 1, 2, 3, 4가 됩니다.
  • temp + “번”: temp의 값에 문자열 “번”이 붙습니다.

정답

1
2
3
4
1 
2 
3 
4

여섯번째 문제의 값 구하기

아래의 문제에서는 num2의 출력값을 구해야합니다.

1
2
3
4
5
6
let num1 = 3;
let num2 = 7;
if (++num1 > 5 || num2++ < 1) {
    console.log(num1);
}
console.log(num2)

문제 풀이

num1, num2의 초기값

  • num1은 3이 선언되었고 num2는 7이 선언되었습니다.

계산식

  • ++의 위치: ++가 앞에 있는 num1의 경우에는 조건식의 처음부터 값이 증가하고 ++가 뒤에 있는 num2는 조건식이 한번 끝난후에 값이 증가됩니다.
  • 비교문 num1: num1의 값이 5보다 커야하는데 num1의 값은 4이기 떄문에 충족되지 못합니다.
  • 비교문 num2: num2의 값이 1보다 작아야하는데 7이기 때문에 충족되지 못합니다.
  • __ (or)__: num1과 num2중 하나라도 조건이 충족될경우 {}안의 콘솔로그가 작동되는데 이번의 경우에는 두개다 충족되지 못해 밖에 있는 num2의 값이 출력됩니다.

정답

1
2
3
4
1 
2 
3 
4

일곱번째 문제의 값 구하기

아래의 문제에서는 num[i]의 출력값을 구해야합니다.

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

문제 풀이

num의 배열값

  • num의 배열안에는 1, 5, 1, 2, 7, 5이 존재합니다.

계산식

  • i: i는 인덱스의 값이며 0부터 시작하며 한번의 조건문이 끝날떄마다 1씩 증가해 6과 값이 같아질때 반복문이 종료됩니다.
  • (i + 2) % 2 == 0: i의 값에 2를 더한 값을 2랑 나눌때 0이 되어야만 안에 들어가 콘솔로그에 저장됩니다.

정답

i(index)값(Element)계산식
010 + 2 = 2 🔜 2 % 2 = 0 (true)
151 + 2 = 3 🔜 3 % 2 = 1 (false)
212 + 2 = 4 🔜 4 % 2 = 0 (true)
323 + 2 = 5 🔜 5 % 2 = 1 (false)
474 + 2 = 6 🔜 6 % 2 = 0 (true)
555 + 2 = 7 🔜 7 % 2 = 1 (false)
1
2
3
1
1
7

여덟번째 문제의 값 구하기

아래의 문제에서는 num2의 출력값을 구해야합니다.

1
2
3
4
5
6
7
8
9
10
11
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("");
        }
    }

문제 풀이

num의 배열값

  • num의 배열안에는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9가 존재합니다.

계산식

  • i: i는 인덱스의 값입니다. 0부터 시작하며 한번의 조건문이 끝날떄마다 1씩 증가해 9과 값이 같아질때 반복문이 종료됩니다.
  • switch: 이 switch 문은 배열 요소 num[i]를 2로 나눈 나머지 값을 확인합니다. 나머지가 1인 경우(홀수)에는 case 1이 실행되고, 그 외의 경우(짝수)에는 default가 실행됩니다.
  • case 1: num[i]와 2를 나눈 나머지 값이 1일 경우 실행합니다.
  • default: case가 실행되지 않을경우 문자열이 실행됩니다.

정답

값(Element)계산식
00 % 2 = 0 (default)
11 % 2 = 1 (case)
22 % 2 = 0 (default)
33 % 2 = 1 (case)
44 % 2 = 0 (default)
55 % 2 = 1 (case)
66 % 2 = 0 (default)
77 % 2 = 1 (case)
88 % 2 = 0 (default)
99 % 2 = 1 (case)
1
가1가3가5가7가9

아홉번째 문제의 값 구하기

아래의 문제에서는 콘솔로그의 출력값을 구해야합니다.

1
2
3
4
5
6
7
8
9
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);

문제 풀이

cnt, sum 의 초깃값

  • 초깃값은 선언되지 않았습니다.

계산식

  • i: i는 0부터 시작하며 7과 값이 같아질때까지 반복합니다. 조건문이 한번 끝날때마다 i의 값이 1씩 증가합니다.
  • if: i의 값에 2를 나눴을떄 나머지값이 1일경우 실행됩니다.
  • cnt++: if문이 실행되어 안에 들어올때마다 값이 1씩 늘어 횟수를 카운트 합니다.
  • sum += i:들어온 i값을 sum에 값을 더해 저장됩니다.
  • cnt + “, “ + sum / 2: cnt에 문자열 , 를 추가한뒤에 sum의 값에 2를 나눈 값을 출력합니다.

정답

i계산식cntsum
00 % 2 = 0 (false)00
11 % 2 = 1 (true)11
22 % 2 = 0 (false)11
33 % 2 = 1 (true)21 + 3 = 4
44 % 2 = 0 (false)24
55 % 2 = 1 (true)34 + 5 = 9
66 % 2 = 0 (false)39
77 % 2 = 1 (true)49 + 7 = 16
횟수sum
116 / 2 = 14
214 / 2 = 12
312 / 2 = 10
410 / 2 = 8
58 / 2 = 6
66 / 2 = 4
74 / 2 = 2
82 / 2 = 0
1
4, 8

열번째 문제의 값 구하기

아래의 문제에서는 콘솔로그의 출력값을 구해야합니다.

1
2
3
4
5
6
7
8
let a = 1, b = 1, num;

    for (let i = 0; i < 6; i++) {
        num = a + b;
        a = b;
        b = num;
    }
    console.log(num)

문제 풀이

a, b, num의 초깃값

  • a와 b는 1, num의 값은 선언되지 않았습니다.

계산식

  • i: i는 0부터 시작하며 6이랑 같아질때 반복문이 종료됩니다. 따라서 반복문은 총 5번 실행됩니다.
  • num의 값과 a, b의 값 변경:
  • a: a의 값은 1부터 시작해 조건문이 한번 돌때마다 b의 값으로 변경됩니다.
  • b:b의 값은 1부터 시작해 조건문이 한번 돌때마다 num의 값으로 변경됩니다.
  • num: a와 b를 더해 나온 값으로 변경됩니다.

정답

i계산식numab
01 + 1 = 2212
11 + 2 = 3323
22 + 3 = 5535
33 + 5 = 8858
45 + 8 = 1313813
58 + 13 = 21211321
1
2
3
num: 21
a: 13
b: 21
This post is licensed under CC BY 4.0 by the author.