Winnie The Pooh Bear 자바스크립트 시험 오답

배움기록/JAVASCRIPT

자바스크립트 시험 오답

코딩은 처음이라 2023. 4. 21. 23:07

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90
반응형

자바스크립트 시험 오답

 

 

01.(X)

{
    let i = 0;
    let sum = 0;

    while(i < 10){
        i = i + 1;
        if(i % 3 == 0)sum -= i;
        if(i % 3 == 1)sum += i;
        if(i % 3 == 2)sum *= i;
    }
    console.log(sum)
}
✨ 정답보기
129
 
🐾 풀이
10보다 작은 동안 반복하는 while루프를 실행합니다.
반복문이 한 번 실행될때 i의 값이 1씩 증가해 1부터 10까지의 값을 가지게 됩니다.
 
i가 3의 배수일때마다 sum에서 i를 빼고
i를 3으로 나눈 나머지가 1일 경우 sum에 i를 더해줍니다. 
 
i를 3으로 나눈 나머지가 2일 경우 sum에 i를 곱해줍니다.
 
반복문이 종료된 후 최종적으로 sum의 값을 출력합니다.
 

02.

{
    let num = [10, 20, 30, 40, 50];
    let i, max, min;
    max = min = num[0];

    for (i = 0; i < 5; i++) {
        if (num[i] > max) max = num[i];
        if (num[i] < min) min = num[i];
    }

    console.log(max, min);
}
✨ 정답보기
50,10

 

03.(X)

{
    function func(begin, diff, n){
        cnt = 1;
        ret = begin;
        while(true){
            cnt += 1;
            ret *= diff;
            if(cnt == n) return ret;
        }
    }

    console.log(func(1, 3, 4));
}
✨ 정답보기
27
 
🐾 풀이
함수 func(begin, diff, n)은 begin 값부터 시작해 diff값을 n번 곱한 결과를 반환하는 함수입니다.
func(1, 3, 4)의 경우 1부터 시작해 3을 4번 곱한 결과인 27을 반환합니다.
 
 
 
 
 
 

04.(X)

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

    console.log(sum)
}
✨ 정답보기
25
 
🐾 풀이
i가 10보다 작을 동안 반복문을 실행하는데
i = i+i 반복문이 실행될 때마다 i의 값이 1씩 증가해
1부터 10까지의 값을 가집니다.
 
i가 짝수라면 continue 를 실행해 반복문의 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다. 
sum += i 가 홀수인 경우에만 실행되는 코드로, sun에 i를 더해줍니다. 
 
즉 홀수일 경우만 sum에 i의 값을 더합니다.
 
반복문이 종료된 후 sum의 최종값을 출력합니다.
 
 

05.(X)

{
    let num = [56, 4, 3, 65, 78];
    let temp;

    for(let i=0; i<1; i++){
        for(let j=0; j<num.length-i-1; j++){
            if(num[j]>num[j+1]){
                temp = num[j];
                num[j] = num[j+1];
                num[j+1] = temp;
            }
        }
    }

    console.log(num)
}
✨ 정답보기
[4, 3, 56, 65, 78]
 
🐾 풀이
[ ]빼먹지 말것..🤦‍♀️
 
 

06.

{
    let num = [56, 4, 3, 65, 78];
    let min = 9999;

    for(let i=0; i<10; i++){
        if(min > num[i]){
            min = num[i];
        }
    }

    console.log(min)
}
✨ 정답보기
3
 

07.(X)

{
    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);
}
✨ 정답보기
[8, 7, 5, 4, 3]
 
🐾 풀이
배열로 쓰자..🤦‍♀️
 
 
 
 
 
 
 
 

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));
}
✨ 정답보기
 10
 
🐾 풀이
arr 배열의 각 요소들이 순회하며 sum변수에 더해집니다.
따라서 sum은 1+2+3+4+5로 15가 됩니다.
 
두번째 for문이 실행되면서 arr배열의 각 요소를 다시 순회해 짝수인 경우 해당값이 sum에서 빠집니다.
2와 4는 짝수이므로 sum에서 각각 2와 4를 빼주어 sum은 15-2-4로 계산되어 9가 됩니다.
최종적으로 func함수는 sum 변수의 최종값인 9를 반환합니다.
?
 
 
 
 
 
 

09.(X)

{
    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)
}
✨ 정답보기
 85
 
🐾 풀이
for문이 실행되며 num 배열의 각 요소를 순회해 현재 인덱스 i에 1을 더한 값을 num[i]에 할당합니다.
따라서 배열은 [1,2,3,4,5,6,7,8,9,10]로 변경됩니다.
 
두번째 for루프가 실행되면서 num 배열의 각 요소를 다시 순회해 현재 인덱스i를 3으로 나눠 나머지가 1인 경우, 해당 값인 num[i]를 sum 변수에서 빼줍니다.
 
따라서 num[1], num[4], num[7] 이 각각 2,5,8이 되어 sum에서 각각 2,5,8 을 빼줘 sum은 100 - 2 - 5 - 8로 계산되어
85가 됩니다.
 
 
 
 
 

10.(X)

{
    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]);
        }
    }
}
✨ 정답보기
2
4
6
 
🐾 풀이
arr배열의 각 요소를 순회하며, 현재 인덱스 i에 해당하는 arr[i]와 temp[i]의 값이 같은 경우, flag 변수를 true 로 설정합니다. 그렇지 않은 경우, flag 변수를 false로 설정하고 temp배열의 idx인덱스에 arr[i]값을 할당하고 console.log(temp[idx])를 통해 해당 인덱스값을 출력합니다.
 
idx 변수는 temp 배열의 인덱스를 나타내며, arr배열과temp배열의 값이 다를 때마다 temp 배열의 해당 인덱스에 arr[i]값을 할당하고, console.log(temp[idx])를 통해 해당 인덱스의 값을 출력합니다.
따라서 console.lof(temp[idx])는 temp 배열에 새로운 값을 할당한 후에 출력되므로 이전 값이 출력되는 것이 아니라 현재 값이 출력됩니다.
 
for문이 종료되고 console.log(temppidx])를 통해 마지막으로 할당된 temp, idx 인덱스의 값을 출력합니다.
 
따라서 temp 배열에 할당된 값들 중 마지막 값이 출력됩니다.
 
 
 
 

11.

{
    let num = [30,40,24,80,99];
    let min = 9999;

    for(let i=0; i<5; i++){
        if(min > num[i]){
            min = _____;
        }
    }

    console.log("최소값 : ", min);
}
✨ 정답보기
num[ i ]
 
 
 

12.

{
    let s1 = "Remember november";
    let s2 = s1.slice(0, 3) + s1.slice(12, 16);
    let s3 = "r AND you";

    console.log(s2 + s3)
}
✨ 정답보기
 Remember AND you
 
 
 
 

13.(X)

{
    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 );
}
✨ 정답보기

false
true
4
0
1
 
🐾 풀이
 
!(x>0) 는 x가 0보다 클 경우 flase를 그렇지 않을 경우 true를 반환합니다.
x의 초기값이 1이므로 x>0은 true가 되고, !연산자에 의해 false가 출력됩니다.
 
x>0 || x<4 는 x가 0보다 크거나 x가 4보다 작은 경우 trhe 를 반환합니다.
 

14.(X)

{
    let num = 0;
    let i = 1;

    while(i<=50){
        if(i%7 == 0){
            num += i;
        }
        i++;
    }
    console.log(num)
}
✨ 정답보기
196
 
 
 
 
 

15.(X)

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

16.(X)

{
    function func(num){
        if(num <= 1){
            return 1;
        } else {
            return num + func(num - 2);
        }
    }
    function main(){
        let num = 5;
        console.log(func(num))
    }
    main();
}
✨ 정답보기
9
 
 
 
 
 

17.

{
    let a=1, b=1, num;

    for(let i=0; i<6; i++){
        num = a + b;
        a = b;
        b = num;
    }
    console.log(num)
}
✨ 정답보기
 21
 
 
 
 
 
 

18.

{
    function func(num1, num2){
        let res = 1;
        for(let i=0; i<num2; i++){
            res *= num1;
        }
        return res;
    }
    let res = func(2, 10);

    console.log(res)
}
✨ 정답보기
1024
 
📑 풀이
 
 
 

19.

{
    let a = func(4);

    for(let i=0; i<a.length; i++){
        console.log(a[i]);
    }

    function func(n){
        let num = [];
        for(let i=0; i<n; i++){
            num[i] = i;
        }
        return num;
    }
}
✨ 정답보기
0
1
2
3
 
 
 
 
 

20.(X)

{
    let a = 3, b = 4, c = 3, d = 5;

    if( (a == 2 | a == c) & !(c > d) & (1 == b ^ c != d) ){
        a = b + c;
        if( 7 == b ^ c != a ){
            console.log(a);
        } else {
            console.log(b);
        }
    } else {
        console.log(a + b)
    }
}
✨ 정답보기
 7
 
 
 
 
 
 
 
 
 
 
 

 

반응형