코딩 공부/오답노트

자바스크립트 테스트09 정보처리 대비 오답노트

천서리 2023. 4. 28. 11:02
QUOTE THE DAY

“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”

- 이글슨 (Eagleson)
반응형

자바스크립트 테스트

정보처리기능사 기출문제를 자바스크립트로 변환한 문제입니다.

 


 

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

 

오답

코드에서는 0부터 9까지의 숫자를 반복하면서 i 값을 증가시키고, i 값이 4의 배수일 때 sum에서 i 값을 뺀 후, 4로 나누어 떨어지지 않을 때는 i 값을 더하고, 4로 나누어 떨어질 때는 i 값을 곱한 값을 sum에 더합니다.

 

  1. i=1 일 때, 1 % 4 == 1 이므로 sum에 1을 더합니다.
  2. i=2 일 때, 2 % 4 == 2 이므로 sum에 2를 곱합니다.
  3. i=3 일 때, 3 % 4 == 3 이므로 sum에 3을 곱합니다.
  4. i=4 일 때, 4 % 4 == 0 이므로 sum에서 4를 뺍니다.
  5. i=5 일 때, 5 % 4 == 1 이므로 sum에 5를 더합니다.
  6. i=6 일 때, 6 % 4 == 2 이므로 sum에 6을 곱합니다.
  7. i=7 일 때, 7 % 4 == 3 이므로 sum에 42를 곱합니다.
  8. i=8 일 때, 8 % 4 == 0 이므로 sum에서 8을 뺍니다.
  9. i=9 일 때, 9 % 4 == 1 이므로 sum에 9를 더합니다.

 

 

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)
}
😎결과 확인하기
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]);
        }
    }
}
😎결과 확인하기
3, 4, 5

 

오답

  1. for 루프는 arr 배열의 각 요소를 반복하여 확인하며, flag 변수는 현재 요소가 temp 배열과 일치하는지 여부를 추적합니다.
  2. 먼저 flag를 false로 설정하고, arr[i]와 temp[i]가 일치하면 flag를 true로 설정합니다. 이후, flag가 false인 경우에만 실행되는 블록에서 temp[idx]에 arr[i] 값을 할당하고 idx를 1 증가시킵니다. 그리고 temp[idx] 값을 콘솔에 출력합니다.
  3. temp 배열의 길이를 arr 배열과 같거나 크게 유지해야 합니다. 만약 arr 배열의 길이가 temp 배열의 길이보다 크다면, 나머지 요소는 temp에 그대로 남게 됩니다.
  4. 또한, idx 변수를 사용하여 temp 배열의 다음 위치에 값을 할당하므로, idx가 arr 배열의 인덱스를 초과하지 않도록 주의해야 합니다.

 

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

 

오답

  1. 함수 func는 매개변수로 받은 num이 1 이하일 경우 1을 반환하고, 그 외의 경우에는 num에 자기 자신보다 2 작은 수를 대입하여 다시 func를 호출한 결과와 num을 더한 값을 반환합니다.
  2. 이렇게 호출된 func 함수는 다시 자신보다 2 작은 수를 대입하여 재귀적으로 호출되며, 이전에 호출한 함수의 결과와 더해지면서 최종적으로 1부터 num까지의 홀수 합을 계산합니다.
  3. 메인 함수 main은 num 변수를 5로 초기화하고, func 함수에 num을 전달하여 그 결과를 콘솔에 출력합니다. 따라서 이 코드를 실행하면, 1부터 5까지의 홀수 합인 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

 

 

반응형
Adventure Time - BMO