공부하기

04.21 Test 오답노트

Hyeon been 2023. 4. 21. 11:55

한번씩 읽고 가세요.

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

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90

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

{
        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

해설:

while 루프는 i가 10보다 작은 동안 실행됩니다. 루프의 처음에 i와 sum 변수가 초기화됩니다. 루프 내부에서 i는 1씩 증가하면서, i를 3으로 나눈 나머지에 따라 다른 조건문이 실행됩니다.

  • 만약 i를 3으로 나눈 나머지가 0이면, i를 sum에서 빼줍니다.
  • 만약 i를 3으로 나눈 나머지가 1이면, i를 sum에 더해줍니다.
  • 만약 i를 3으로 나눈 나머지가 2이면, i를 sum에 곱해줍니다.

따라서 i가 1일 때는 i % 3 == 1이므로 sum = sum + 1이 되어 sum이 1이 됩니다. 이후 i가 2일 때는 i % 3 == 2이므로 sum = sum * 2가 되어 sum이 2가 됩니다. 마찬가지로 i가 3일 때는 i % 3 == 0이므로 sum = sum - 3이 되어 sum이 -1이 됩니다. 이후 i가 4일 때는 i % 3 == 1이므로 sum = sum + 4가 되어 sum이 3이 됩니다.

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(true){
                cnt += 1;
                ret *= diff;
                if(cnt == n) return ret;
            }
        }
    
        console.log(func(1, 3, 4));
    }
    

정답: 27

해설:

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

해설:

주어진 배열 num의 모든 요소의 합을 계산하고, 그 중에서 짝수인 요소들을 제외한 값을 반환합니다.

함수 func는 매개변수 arr을 받아서, 먼저 for 루프를 이용하여 배열의 모든 요소를 더한 후, 다시 for 루프를 이용하여 짝수인 요소들을 빼줍니다. 이렇게 계산된 값은 return 문을 통해 반환됩니다.

변수 sum의 초기값은 1로 설정되어 있으므로, 배열 num의 모든 요소를 더한 후에는 sum에 num 배열의 요소들의 합과 1을 더한 값이 저장됩니다. 그리고 배열 num의 요소를 반복하면서, 짝수인 요소들은 sum에서 빼줍니다. 따라서 이 코드를 실행하면, 배열 num에서 짝수인 요소 2와 4를 제외한 1 + 3 + 5 + 1의 값을 반환하게 됩니다.

따라서 이 코드를 실행하면, 콘솔에 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)
    }
    

정답: 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]);
            }
        }
    }
    

정답: 2,4,6

해설:

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

{
        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

ture

4

0

1

해설:

이 코드는 JavaScript로 작성된 간단한 프로그램입니다. 이 코드에서는 변수 x를 선언하고, 여러 가지 연산을 수행하여 결과를 출력합니다.

  • 첫 번째 console.log 문에서는 x>0의 결과에 논리 부정 연산자 !를 적용한 결과인 false가 출력됩니다.
  • 두 번째 console.log 문에서는 x>0의 결과인 true와 x<4의 결과인 true 중에서 하나 이상이 참이므로 전체 조건식의 결과는 참(true)이 됩니다. 따라서 true가 출력됩니다.
  • 세 번째 console.log 문에서는 비트 왼쪽 시프트 연산자(<<)를 이용하여 x의 이진수 표현을 왼쪽으로 2칸 이동한 결과인 100(2진수)가 출력됩니다. 이는 1(2진수)를 왼쪽으로 2칸 이동한 결과입니다.
  • 네 번째 console.log 문에서는 비트 AND 연산자(&)를 이용하여 x(1)과 2(10)의 비트 AND 연산을 수행한 결과인 0이 출력됩니다. 이는 x가 2의 비트 AND 연산을 수행한 결과와 같습니다.
  • 다섯 번째 console.log 문에서는 비트 AND 연산자(&)를 이용하여 x(1)과 3(11)의 비트 AND 연산을 수행한 결과인 1이 출력됩니다. 이는 x가 3의 비트 AND 연산을 수행한 결과와 같습니다

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

해설:

1부터 998까지의 수 중에서 3의 배수이면서 짝수가 아닌 수를 찾아서 그 중 가장 큰 수를 출력하는 코드입니다.

반복문을 통해 1부터 998까지의 모든 수에 대해 조건식을 평가합니다. i가 3의 배수이면서 짝수가 아닌 경우에는 조건이 충족되므로 result 변수에 i 값을 저장합니다. 이때 result 변수에 새로운 값이 할당되면, 이전에 저장된 값은 덮어쓰기 되어 사라지게 됩니다. 반복문이 끝나면 result 변수에 저장된 값, 즉 3의 배수이면서 짝수가 아닌 수 중 가장 큰 수가 출력됩니다.

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

해설:

func 함수를 호출하고, 반환된 배열을 for문을 통해 출력하는 코드입니다.

먼저 함수 func은 매개변수로 n을 받아서 길이가 n인 배열을 생성합니다. for문을 통해 배열의 각 요소에는 0부터 n-1까지의 숫자가 할당됩니다. 그리고 생성된 배열을 반환합니다.

다음으로, func 함수를 호출하여 반환된 배열을 변수 a에 할당합니다. 이어서 for문을 통해 배열 a의 모든 요소를 출력합니다.

따라서 이 코드를 실행하면, 0부터 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

해설: