JAVASCRIPT

자바스크립트 오답문제

ture403 2023. 4. 21. 11:53

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

오답 풀이

5번 문제

<h3 data-ke-size="size23">05. 다음의 결괏값을 작성하시오.</h3>
    <div>
    <pre class="clojure"><code>{
        let num = [56, 4, 3, 65, 78];
        let temp;
    
        for(let i=0; i&lt;1; i++){
            for(let j=0; j&lt;num.length-i-1; j++){
                if(num[j]&gt;num[j+1]){
                    temp = num[j];
                    num[j] = num[j+1];
                    num[j+1] = temp;
                }
            }
        }
    
        console.log(num)
    }
    </code></pre>

배열의 처음부터 끝까지 반복하면서 인접한 요소를 비교합니다. 이때, i는 바깥쪽 루프에서 현재까지 정렬된 요소의 개수를 나타냅니다. 처음에는 i가 0이므로, 모든 요소를 비교합니다. 정렬된 요소는 비교하지 않아도 되므로, num.length-i-1 만큼만 반복합니다.

  1. 인접한 요소를 비교합니다. 만약 앞쪽 요소가 뒷쪽 요소보다 크다면, 두 요소의 위치를 바꿉니다.
  2. 앞쪽 요소와 뒷쪽 요소를 비교합니다. 만약 앞쪽 요소가 더 크다면, 두 요소의 위치를 바꿉니다. 이때, 임시 변수 temp를 사용하여 두 요소를 교환합니다.
  3. 주어진 배열 num을 오름차순으로 정렬한 결과입니다. 처음에는 56과 4를 비교하여 위치를 바꾸고, 56과 3을 비교하여 위치를 바꾸었습니다. 이후에는 더 이상 위치를 바꿀 필요가 없어서 정렬이 완료됩니다.

6번문제

<h3 data-ke-size="size23">06. 다음의 결괏값을 작성하시오.</h3>
    <div>
    <pre class="clojure"><code>{
        let num = [56, 4, 3, 65, 78];
        let min = 9999;
    
        for(let i=0; i&lt;10; i++){
            if(min &gt; num[i]){
                min = num[i];
            }
        }
    
        console.log(min)
    }
    </code></pre>
  1. if 문을 사용하여 배열 num의 요소를 하나씩 검사합니다. 만약 현재 검사 중인 요소가 min보다 작다면, min 값을 현재 요소의 값으로 변경합니다.
  2. 현재 검사 중인 요소가 min보다 작으면, min 값을 현재 요소의 값으로 변경합니다. 이때, 배열 num의 모든 요소를 검사하면서 가장 작은 값을 찾습니다.

7번문제

<h3 data-ke-size="size23">07. 다음의 결괏값을 작성하시오.</h3>
    <div>
    <pre class="clojure"><code>{
        let num = [3, 4, 5, 7, 8];
        let temp;
    
        for(let i=0; i&lt;=3; i++){
            for(let j=i+1; j&lt;=4; j++){
                if(num[i] &lt; num[j]){
                    temp = num[i];
                    num[i] = num[j];
                    num[j] = temp;
                }
            }
        }
    
        console.log(num);
    }
    </code></pre>
  1. for 루프를 실행합니다. 이 루프는 배열 num의 첫 번째 요소부터 네 번째 요소까지 순서대로 반복합니다.
  2. 이중 for 루프를 실행합니다. 이 루프는 현재 i번째 요소보다 큰 j번째 요소들을 탐색합니다. j는 i+1부터 4까지의 값을 가집니다.
  3. if 문을 사용하여 배열 num의 i번째 요소와 j번째 요소를 비교합니다. 만약 i번째 요소가 j번째 요소보다 작다면, i번째 요소와 j번째 요소의 값을 교환합니다.
  4. 현재 i와 j 값에 해당하는 두 요소를 비교하여 i번째 요소가 j번째 요소보다 작으면, 이 두 요소의 값을 교환합니다. 이 때, 가장 큰 요소가 배열 num의 앞쪽으로 이동하게 됩니다.

8번문제

<h3 data-ke-size="size23">08. 다음의 결괏값을 작성하시오.</h3>
    <div>
    <pre class="clojure"><code>{
        let num = [1,2,3,4,5];
        let sum = 1;
        
        function func(arr){
            for(let i=0; i&lt;arr.length; i++) {
                sum += arr[i];
            }
    
            for(let i=0; i&lt;arr.length; i++){
                if(arr[i] % 2 == 0) sum -= arr[i];
            }
            return sum;            
        }
    
        console.log(func(num));
    }
    </code></pre>

주어진 배열 num의 모든 요소의 합은 15이지만, 함수 func에서 sum 변수를 초기값 1로 설정하여 1을 더한 값인 16부터 계산이 시작됩니다. 따라서, 배열 num의 모든 요소의 값을 합한 결과에 1을 더한 값이 먼저 계산됩니다. 그리고 배열 num에서 짝수인 요소들의 값을 빼준 결과인 8이 출력됩니다.

 

11번문제

<h3 data-ke-size="size23">11. 다음은 최솟값을 출력하는 예제이다. 밑줄에 적합한 표현을 작성하시오.</h3>
    <div>
    <pre class="clojure"><code>{
        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);
    }
    </code></pre>

이번문제는 num[i]가 답입니다.

 

12번문제

<div style="color: #000000; text-align: start;">
    <h3 data-ke-size="size23">12. 다음의 결괏값을 작성하시오.</h3>
    <div>
    <pre class="armasm"><code>{
        let s1 = "Remember november";
        let s2 = s1.slice(0, 3) + s1.slice(12, 16);
        let s3 = "r AND you";
    
        console.log(s2 + s3)
    }
    </code></pre>

slide를 써서 작성한 것입니다. s2의 첫번쨰는 rem 2번쨰는 ber 을 합치고 가드암 s3에 있는 문자열을 합치면 정답이 됩니다.

 

13번문제

<h3 data-ke-size="size23">13. 다음의 결괏값을 작성하시오.</h3>
    <div>
    <pre class="sas"><code>{
        let x = 1;
    
        console.log( !(x&gt;0) );
        console.log( x&gt;0 || x&lt;4 );
        console.log( x&lt;&lt;2 );
        console.log( x&amp;2 );
        console.log( x&amp;3 );
    }
    </code></pre>
  1. !(x>0)는 x가 0보다 큰 경우 false를, 그렇지 않은 경우 true를 반환합니다. x가 1이므로, x>0은 true가 되며 이를 논리 부정 연산자인 !로 뒤집어서 false가 출력됩니다.
  2. x>0 || x<4는 x가 0보다 큰 경우 true를, x가 4보다 작은 경우 true를 반환합니다. x가 1이므로, x>0은 true이며, x<4도 true이므로 둘 중 하나가 true이므로 전체 조건식은 true가 됩니다.
  3. x<<2는 x의 이진수 표현에서 2비트를 왼쪽으로 시프트한 결과인 100(2) 즉 4(10)를 반환합니다.
  4. x&2는 x와 2의 이진수 비트를 비교하여 논리곱 연산을 수행합니다. x의 이진수는 01(2)이며, 2의 이진수는 10(2)입니다. 두 비트를 비교하면 결과는 00(2)이므로 0을 반환합니다.
  5. x&3는 x와 3의 이진수 비트를 비교하여 논리곱 연산을 수행합니다. x의 이진수는 01(2)이며, 3의 이진수는 11(2)입니다. 두 비트를 비교하면 결과는 01(2)이므로 1을 반환합니다.