Javascript/시험 오답

자바스크립트 오답노트_0428시험

아라라_ 2023. 4. 28. 16:52

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

Frederick Philips Brooks
Mythical Man-Month 저자
728x90

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

답 : 190


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. 다음의 결괏값을 작성하시오.

{
        function func(begin, diff, n){
            cnt = 1;
            ret = begin;
            while(0){
                cnt += 1;
                ret *= diff;
                if(cnt == n) return ret;
            }
            return ret
        }
    
        console.log(func(1, 3, 4));
    }
    

답 : 1


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

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

답 : 25


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

{
        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. 다음의 결괏값을 작성하시오.

{
        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


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

i 0 1 2 3 4 5 6 7 8 9
i+1 1 2 3 4 5 6 7 8 9 10

i 1 2 3 4 5 6 7 8 9 10
i % 3 ==1 x o x x o x x o x x
sum = 100   -2(98)     -5(93)     -8(85)    

 


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]);
            }
        }
    }
    
i arr[i] temp[i] flag arr[i] ==temp[i] flag2 temp[idx]  
0 1 1 true true true 1  
1 2 2 true true true 2  
2 3 4 false false false 3 3
3 4 6 false false false 4 4
4 5 8 false false false 5 5

답 : 3,4,5


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

위의 코드는min 값을 구하는 코드로 if문을 보면 min이 num[i]보다 작을때 min의 값을 저장합니다 이때 min에 작은 수를 저장하다보면 min값을 구할 수 있는 코드이므로 num[i]이 들어가야 합니다.

답 : 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. 다음의 결괏값을 작성하시오.

{
        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 );
    }
    
  • !(x > 0)
    x > 0 은 참이므로, ! (not) 연산자를 적용하면 거짓이 됩니다.
    결과적으로 false가 출력됩니다.
  • x > 0 || x < 4
    x > 0 이 참이므로, || (or) 연산자를 통해 전체 조건식이 참이 됩니다.
    결과적으로 true가 출력됩니다.
  • x << 2
    << (left shift) 연산자는 비트를 왼쪽으로 지정된 수만큼 이동시키는 연산입니다.
    1 의 이진수 표현인 0001 에 대해 2 비트 왼쪽으로 이동하면 0100 즉, 4 가 됩니다.
    결과적으로 4 가 출력됩니다.
  • x & 2
    & (bitwise and) 연산자는 비트 단위로 and 연산을 수행합니다.
    1 의 이진수 표현인 0001 과 2 의 이진수 표현인 0010 을 and 연산하면 0000 이 됩니다.
    결과적으로 0 이 출력됩니다.
  • x & 3
    1 의 이진수 표현인 0001 과 3 의 이진수 표현인 0011 을 and 연산하면 0001 이 됩니다.
    결과적으로 1 이 출력됩니다.

답 : false true 4 0 1


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

{
        let num = 0;
        let i = 1;
    
        while(i<=50){
            if(i%7 == 0){
                num += i;
            }
            i++;
        }
        console.log(num)
    }
    

답 : 196


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

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

답 : 993


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

{
        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. 다음의 결괏값을 작성하시오.

{
        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