javascript

javascriptTest05 학원에서 시험 봤어요 !

grovy 2023. 4. 1. 20:01
728x90

학원에서 시험 봤어요 같이 풀어봐요 ! 

 

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

{
    let num = 0;

    while(false){
        num++;
        if( num == 3 ){
            continue;
        }
        if( num > 10 ){
            break;
        }
    }
    console.log(num);         
}

while 문에 false가 있어서 실행되지 않아요 !


 

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

{
    let a = 6, b = 9, c = 3, result;
    result = ++a + b++ + ++c;

    console.log(result);
    console.log(a+b+c);
}

 

a는  ++a

b는  b++

c는 --c

이여서 b만 후치 연산자여서 result는 7 + 9 + 4 이후 연산이 끝나면 b값이 1증가하여 21이 나옵니다.

 


03. 결괏값을 작성하시오.

{
    function func(){
        let a = [];

        for(i=1; i<=5; i++){
            a += [i];
        }
        console.log(a);
    }
    func();
}

배열1칸에 i값을 계속 더해주기 때문에 12345가 나옵니다. 

 


04. 결괏값을 작성하시오.

{
    let arr = [3,4,1,4,1,3,4,9,8,3];
        
    for(let i=0; i<10; i++){
        if(i % 3 == 2){
            console.log(arr[i]);
        }
    }

    console.log(sum);
}

3으로 나눈 값이 2가 나오는 걸 찾는 문제입니다. 

i가 2 5 8 일때 값을 찾는것이므로 

배열에 넣으면 1 3 8이 나와


05. 결괏값을 작성하시오.

{
    function func(num1, num2){
        if(num1 > num2) return num1
        else return num2
    }
    console.log(func(17, 23) + func(50, 40))
}

 

값이  첫번째값이 클경우 num1을 아닐경우 num2를 반환해서 

23과 50 이 나와요 합치면 83입니다. 

 


06. 결괏값을 작성하시오.

{
    function func(index){
        console.log("함수가 실행되었습니다." + index);
    }
    function callback(num){
        for(let i=0; i<=5; i++){
            num(i);
        }
    }
    callback(func);
}

sㅇㄹ

for문안에 조건이 0부터 5까지 반복하는거에요 

함수가 실행되었스니다. 0

함수가 실행되었스니다. 1

함수가 실행되었스니다. 2

함수가 실행되었스니다. 3

함수가 실행되었스니다. 4

함수가 실행되었스니다. 5

이렇게 나와요 

 


07. 결괏값을 작성하시오.

{
    for(let i=1; i<=5; i++){
        console.log(i);

        if(i == 4){
            break;
        }
    }
}

 

for문안에 break를 만나 1부터 4까지만 나와요 


08. 결괏값을 작성하시오.

{
    const arr = [100, 200, 300, 400, 500];

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

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

 

join을 이용해서 치환하고 

pop를 이용해서 배열 끝의 값을 삭제했어요 

100*200*300*400*500
100200300400500600
100 200 300 400 500

이렇게 나와요 


09. 다음을 결과값을 작성하시오.

{
    let a, b = 10;

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

fr

a가 b와 처음값은 10에서 실행되서 

for 문에서 

a 와 b의 각 이 

0 10

1 9

2 7

3 4

4 0

이렇게 나와요 최종적으로 


10. 다음을 결과값을 작성하시오.

{
    function func(){
        let i = 10, j = 20, k = 30;
        i /= j;
        j -= i;
        k %= j;

        console.log(i);
        console.log(j);
        console.log(k);
    }
    func();
}

 

각값을 구하는거에요 

i = i / j 이므로 i = 0.5 

j -=i 는 20 - 0.5 = 19.5

k%j 는 30%19.5 = 10.5

이렇게 연산되요


11. 다음을 결과값을 작성하시오.

{
    let k = 2;
    let temp;
    for(let i=0; i<=3; i++){
        temp = k;
        k++;
        console.log(temp + "번");
    }
}

 

 k가 2부터 시작하고 temp=k 이므로 

 i 가 3일때 까지 k++를 반복합니다.

2번

3번

4번

5번까지 나와요 


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

{
    let num = 10;
    num += 2;
    num -= 3;
    num *= 5;
    num /= 5;
    num %= 9;
    
    console.log(num)
}

 

더해서 10+2 =12

빼서 10-3 =9 

곱해서 9*5=45

나누고 45/5 =9

%연산하니 num%9 = num 해서 0이나와

 


13. 다음을 결과값을 작성하시오.

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

 

if문 안에 (i+2) %2연산 값이 0일경우 

i가 0,2,4일때 각배열의 값이 나와요

1 1 7이 나옵니다.

 

 


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

{
    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 까지 반복되고 i값을 %2해서 1이 나올때만 숫자를 입력하기때문에 홀수만 출력되고

짝수는 **을 찍어요 **1**3**5**7**9 이렇게 나와요 

 


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

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

dㄹ

i%2를 한 값이 1 일때만 

cnt ++ 

sum = sum +1 를 해주기 때문에 

1 3 5 7 일때만 수행되서 4와  16 이 나오는데 sum/2를 하기때문에 8이 나와요 


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

{
    let data = [70, 80, 75, 60, 90];
    let best = 1;
    let score = 0;

    for(let i=0; i<data.length; i++){
        if(data[i]>=80) {
            best++;
        }
        if(score < data[i]) {
            score = data[i];
        }
    }

    console.log(best, score)
}

 

i 가 80이상일때만 best ++ 구문이 실행되고 score는 가장 큰값을 저장이 되는 로직이에요 

best는 1부터 시작해서 3과 , 90이 나옵니

 


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

{
    let a, b, result;
    a = 7, b = 4
    result = a | b;

    console.log(result)
}

or 연산자 이므로 

a은 1111

b는 0100

두 값이 중 하나라도 1일경우 1로 바뀌기 때문에 

최종값은 1111 이 나오고 7이 나와


18. 다음을 결과값을 작성하시오.

{
    function solution(a, b, c){
        let answer = "YES", max;
        let total = a + b + c;

        if(a > b) max = a;
        else max = b;
        if(c > max) max = c;
        if(total-max <= max) answer = "NO"; 
        
        return answer;
    }

    console.log(solution(53, 93, 107));
}

 

3가지 숫자를 비교하는데

total 값 253에서 최대값 107을 뺀값이 107보다 작거나 같지 않기 때문에  yes가 나와요 


19. 다음을 결과값을 작성하시오.

{
    function solution(a, b, c){
        let answer;
        if(a < b) answer = a;
        else answer = b;
        if(c <= answer) answer = c; 
        return answer;
    }
    console.log(solution(15, 12, 11));
}

 

a b c 각값을 비교해서 값이 작을경우에 answer에 넣어 주어 가장작은 값을 리턴 하는 로직입니다 콘솔엔 11이나와

 

 

 


20. 다음을 결과값을 작성하시오.

{
    function solution(day, arr){
        let answer = 0;
        for(let x of arr){
            if(x % 10 == day) answer++;
        }
        return answer;
    }
    
    arr = [25, 23, 11, 47, 53, 17, 33, 40];
    console.log(solution(0, arr));
}

 

solution (day , arr )에 day 값이 0이 들어가기 때문에 

if문 안의 조건 (x % 10 == 0) 즉 10으로나눈값이 0일 때만 answer를 1씩 증가시키기 때문에 

1이 나옵니다. 

 

 

 

답을 다 안적거나 슥보고 지나가서 실수하여 몇개 틀렸는데 ... 앞으로 더 꼼꼼하게 풀어야겠어요 ... ㅜㅜ

 

틀린게 생각보다 많네요 ..