Post

자바스크립트

javascript 문제 풀기

오늘은 자바스크립트를 얼마나 알고 있는지 알아보도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
{
        function func(){
            let a = [];
    
            for(i=1; i<=5; i++){
                a += [i];
            }
            console.log(a);
        }
        func();
}   

첫번째 문제는 쉬우니까 답만 알려드리도록 하겠습니다.
정답 : 12345

1
2
3
4
5
6
7
8
9
10
11
{
    const arr = [100, 200, 300, 400, 500];

    const text1 = arr.join("*");
    const text3 = arr.join("");
    const text4 = arr.join(" ");

    console.log(text1);
    console.log(text3);
    console.log(text4);
}

두번째 문제 같은 경우 text1 = arr에 join * 을 하게되었습니다.
출력값을 확인해보면 100200300400500 이 출력됩니다.

text3 arr에 ““을 추가함으로써 출력시 100200300400500이 나오게 됩니다.

마지막으로 text4 arr에 “ “을 추가함으로써 출력시 100 200 300 400 500 이 출력되게 됩니다.

정답 : 100200300400500
100200300400500
100 200 300 400 500

1
2
3
4
5
6
7
8
9
{
        let a, b = 10;

        for(let i=0; i<5; i++){
            a = i;
            b -= a;
        }
        console.log(a, b)
}

해당 코드의 풀이를 보면,

1
2
3
4
5
6
초기값: a = 0, b = 10
i = 0: a = 0, b = 10 - 0 = 10
i = 1: a = 1, b = 10 - 1 = 9
i = 2: a = 2, b = 9 - 2 = 7
i = 3: a = 3, b = 7 - 3 = 4
i = 4: a = 4, b = 4 - 4 = 0

이런식으로 a 는 1씩 증가하지만 b는 a의 값을 빼서 4,0이 되는것을 확인 할 수 있습니다.

정답 : 4 , 0

1
2
3
4
5
6
7
8
9
10
11
12
13
{
        function func(){
            let i = 20, j = 20, k = 30;
            i /= j;
            j -= i;
            k %= j;
    
            console.log(i);
            console.log(j);
            console.log(k);
        }
        func();
}

해당 코드를 살펴보면 i = 20 / 20을 한다는 뜻입니다.
그렇게 해서 i 는 1이되면서 출력이 되고 j= 20 - i를 하는 것이기 떄문에 j는 19가 출력이됩니다.

그렇게 K = 30 % j(19) 가되어서 나머지 값인 11이 출력이 됩니다.

정답 : 1,19,11

1
2
3
4
5
6
7
8
9
{       
        let k = 1;
        let temp;
        for(let i=0; i<=3; i++){
                temp = k;
                k++;
                console.log(temp + "");
        }    
}

해당 코드를 살펴보면 for문이 총 0~3까지 반복될때 k++한다고 합니다.

그 k는 temp에 저장이 되어 출력이 되므로, 1번,2번,3번,4번이 출력 됩니다.

정답 : 1번, 2번, 3번, 4번

1
2
3
4
5
6
7
8
{
        let num1 = 3;
        let num2 = 7;
        if(++num1 > 5 || num2++ < 1){
                console.log(num1);
        }
        console.log(num2)
}
  • ++num1: num1의 값을 1 증가시킨 후에 비교합니다. num1은 3에서 4가 되고, 다시 4에서 5가 됩니다.

  • ++num1 > 5: 이제 num1은 5이므로, 이 조건은 false입니다.

  • num2++ < 1: 이 부분은 실행되지 않습니다. 왜냐하면 JavaScript에서는 논리 연산자 (OR)가 첫 번째 조건이 true일 때 두 번째 조건을 평가하지 않는 “단축 평가(short-circuit evaluation)” 방식을 사용하기 때문입니다.
  • 여기서 첫 번째 조건이 false이므로, 두 번째 조건이 평가되어야 하지만 num2++ < 1 조건은 num2가 7인 상태에서 false가 됩니다.

  • num2는 7에서 8로 증가합니다.

console.log(num1): if 문의 조건이 false이므로 이 줄은 실행되지 않습니다.
console.log(num2): num2의 최종 값, 8을 출력합니다.

정답 : 8

1
2
3
4
5
6
7
8
{
        let num = [1, 5, 1, 2, 7, 5];
        for(let i=0; i<6; i++){
                if((i+2) % 2 == 0){
                        console.log(num[i]);
                }
        }
}

해당 코드를 살펴보면 for문은 0~5까지 반복 하면서 i +2 % 2 == 0 이 참일 경우 출력하라고 합니다.

처음 0은 +2 를하고 %2 를하였을때 나머지가 0 이므로 홀수를 제외한 짝수가 출력 되는것을 확인 할 수 있습니다.

정답 : 1,1,7

1
2
3
4
5
6
7
8
9
10
11
12
13
{
        let num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

        for(let i=0; i<=9; i++){
                switch(num[i] % 2){
                        case 1:
                            console.log(num[i]);
                            break;
                        default:
                            console.log("*");
                }
        }
}

해당 코드를 살펴보면 i = 0~9까지 반복이 되면서 %2를 하여 case 1 즉 나머지가 1일경우 num[i] 값을 출력 하라 나와있고 아닐경우 “*“이 출력되게 하였습니다.

즉 홀수 값들이 출력 되는 것을 확인 할 수 있습니다.

정답 : 1357*9

1
2
3
4
5
6
7
8
9
10
11
{
        let cnt = 0;
        let sum = 0;
        for(let i=0; i<=7; i++){
                if(i%2 == 1){
                        cnt++;
                        sum += i;
                }
        }
        console.log(cnt + ", "+sum/2);
}

해당 코드를 살펴보면 전 문제랑 상당히 유사하다는 것을 알 수있습니다.

i의 변수값이 0~7까지 반복되게 하면서 i%2 == 1 일 경우 cnt++ 하면서 sum에 +=i를 시켜달라는 것입니다.

홀수일때 cnt++ 가 되며 i에 값이 sum 으로 들어가게 됩니다.

1,3,5,7 총 4번 카운트가 되며 그 값을 더한 16을 나누기 2하게 됩니다.

정답 : 4,8

1
2
3
4
5
6
7
8
9
10
{
        let a=1, b=1, num;

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

해당 코드는 피보나치 수열이라고 생각하시면 됩니다.

  • 변수 초기화: a와 b는 각각 피보나치 수열의 첫 번째 항과 두 번째 항의 값인 1로 초기화됩니다. num은 계산된 피보나치 수를 저장할 변수입니다.

-for 루프 실행: 루프는 0부터 5까지 총 6번 반복됩니다. 각 반복에서, num은 a와 b의 합, 즉 현재 피보나치 항의 값을 계산합니다.
a는 b의 값을 받고, b는 num의 값을 받습니다. 이것은 수열에서 다음 위치로 이동하는 것을 시뮬레이션합니다.

  • 출력: console.log(num)은 루프가 종료된 후, num의 값을 출력합니다. 이 값은 루프의 마지막 반복에서 계산된 피보나치 항입니다.

정답 : 21

다음시간에 계속…

image

This post is licensed under CC BY 4.0 by the author.