문제풀이

자바스크립트 문제 4 풀이

이미사용 2023. 3. 24. 17:02
명언
-
728x90
반응형

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

{
    const str = "javascript";

    const text = str.indexOf("a");
    const text2 = str.lastIndexOf("a");
    const text3 = str.includes("a");

    console.log(text);
    console.log(text2);
    console.log(text3);
}

1

3

true

 

 

02. 다음의 결괏값을 보고 빈칸을 채우시오.

{
    function func(){
        document.write("함수2가 실행되었습니다.");
    }
    function callback(str){
        document.write("함수1가 실행되었습니다.");
        _______();
    }
    callback(func);

    //함수1가 실행되었습니다.
    //함수2가 실행되었습니다.
}

str

 

 

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

{
    function func(a, b){
        console.log(arguments[0]);
        console.log(arguments[1]);
    }
    func("1", "2");
}

1

2

 

 

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

{
    function func(num, name, word){
        this.num = num;
        this.name = name;
        this.word = word;
    }
    
    func.prototype = {
        result1 : function(){
            console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
        },
        result2 : function(){
            console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
        },
        result3 : function(){
            console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
        }
    }
    
    const info1 = new func("1", "함수", "실행");
    const info2 = new func("2", "자바스크립트", "실행");
    const info3 = new func("3", "제이쿼리", "실행");
    
    info1.result1();
    info2.result2();
}

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

2. 자바스크립트가 실행되었습니다.

 

 

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

{
    function func(num, name, word){
        this.num = num;
        this.name = name;
        this.word = word;
    }

    func.prototype.result = function(){
        console.log(this.num + ". " + this.name + "가 "+ this.word + "되었습니다.");
    }

    const info1 = new func("1", "함수", "실행");
    const info2 = new func("2", "자바스크립트", "실행");
    const info3 = new func("3", "제이쿼리", "실행");

    info1.result();
}

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

 

 

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

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

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

 

 

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

{
    let num = 1;

    do {
        num++;
        console.log("실행되었습니다.");
    } while (num <= 5);

}

실행되었습니다.실행되었습니다.실행되었습니다.실행되었습니다.실행되었습니다.

 

풀이

반복문do while문입니다.  do는 조건이 맞지 않아도 한번은 실행합니다.

변수 num이 1일때,

do는 num++를 해주고 실행되었습니다.를 실행합니다.

그후 num<=5일때 까지 실행합니다.

그럼

처음시작은 num이 1일때 num++를 해주어 num은 2가되고 실행되었습니다 첫번째가 실행되고, 2<=5 이니 다시 실행합니다.

num이 2일때 num++를 해주어 num은 3이되고 실행되었습니다 두번째가 실행된후, 3<=5 이니 다시 실행합니다.

num이 3일때  num++를 해주어 num은 4가되고 실행되었습니다 세번째가 실행된후, 4<=5 이니 다시 실행합니다.

num이 4일때  num++를 해주어 num은 5가되고 실행되었습니다 네번째가 실행된후, 5<=5 이니 다시 실행합니다.

num이 5일때  num++를 해주어 num은 6가되고 실행되었습니다  다섯 째가 실행된후, 6<=5 이니 조건이 만족하므로 다시 실행하지 않습니다. 그러므로 5번실행됩니다.

 

 

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

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

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

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

}

100*200*300*400*500

100-200-300-400-500

100200300400500

100 200 300 400 500

 

 

09. 다음을 최대한 짧게 약식으로 표현하시오.

{
    function func(str){
        return str;
    }
    func("함수가 실행되었습니다.")
}

답 func = str => str;

 

 

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

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

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

 

답 

1

9

3

 

풀이

let i = 10, j = 10, k = 30; 일때

i = i /(나누기) j 의 값으로 변경하고,

j = j - i의 값으로 변경하고,

k = k %(나미지 값) j의 값으로 변경해야합니다.

 

그래서 첫번째식은 i = 10/10 이므로 i가 '1'로 변경 되고,

i가 변경된 채로 두번째식을 풀어야 하므로

j = 10 - 1 이며 j는 '9'로 변경 되고,

j가 변경된 채로 세번째식을 풀어야 하므로

k= k%9 이며 나머지값 k는 '3'입니다.

결과 i,j,k= 1,9,3입니다.

 

 

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

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

0번

1번

2번

3번

 

풀이

변수 k = 0 이고, 또 다른 변수 temp이 있습니다.

반복문 for문으로 변수 i=0일때 i<=3 일때 까지

temp = k를 console.log를 통해 출력한 후 k에 1을 더해줍니다.를 반복합니다.

그래서 0번 1번 2번 3번 이 나옵니다.

만약 k++이 temp = k; 위에 있었다면 

1번 2번 3번 4번 이 나옵니다.

 

 

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

{
    let num1 = 3;
    let num2 = 7;
    if(++num1 < 5 || ++num2 > 8){
        console.log(num1);
    }
    console.log(num2)
}

4

7

 

 

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

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

답 5 2 5

 

풀이

반복문 for문을 이용해서 변수 i = 0일때, i<6이 될때 까지 i++를 해줍니다.

조건으로 (i+1) % 2 의나머지값이 0일때, 배열을 에 있는 i를 출력 해줍니다. 

이것을 반복 해주시면

(i)0+1 =1 %2 == 0 이 아니므로 넘어갑니다.

(i)1+1 =2 %2 == 0 이 맞으므로 1번째 배열을 출력합니다.(5)

(i)2+1 =3 %2 == 0 이 아니므로 넘어갑니다.

(i)3+1 =4 %2 == 0 이 맞으므로 3번째 배열을 출력합니다.(2)

(i)4+1 =5 %2 == 0 이 아니므로 넘어갑니다.

(i)5+1 =6 %2 == 0 이 맞으므로 5번째 배열을 출력합니다.(5)

그래서 답은 5 2 5 입니다.

 

 

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

{
    let num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    for(let i=9; i>=0; i--){
        switch(num[i] % 2){
            case 1:
                console.log(num[i]);
                break;
            default:
                console.log("*");
        }
    }
}

답 9*7*5*3*1*

 

풀이

변수에 배열이 있을때

반복문 for을 이용하여 변수 i = 9 일때 i >=0 이 맞으면 i--를 해줍니다.(반대로 출력해 주어야 합니다.)

그 후 조건이 (배열에 있는 값) % 2 의 값이 1일때 배열에 있는 i를 출력하고 아닐때는 *을 출력합니다.

그러면 

num[9]=9 % 2 의 나머지값은 1이 맞으므로 9를 출력해 줍니다.

num[8]=8 % 2 의 나머지값은 1이 아니므로 *을 출력해 줍니다.

num[7]=7 % 2 의 나머지값은 1이 맞으므로 7를 출력해 줍니다.

num[6]=6 % 2 의 나머지값은 1이 아니므로 *을 출력해 줍니다.

num[5]=5 % 2 의 나머지값은 1이 맞으므로 5를 출력해 줍니다.

num[4]=4 % 2 의 나머지값은 1이 아니므로 *을 출력해 줍니다.

num[3]=3 % 2 의 나머지값은 1이 맞으므로 3를 출력해 줍니다.

num[2]=2 % 2 의 나머지값은 1이 아니므로 *을 출력해 줍니다.

num[1]=1 % 2 의 나머지값은 1이 맞으므로 1를 출력해 줍니다.

num[0]=0 % 2 의 나머지값은 1이 아니므로 *을 출력해 줍니다.

 

 

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

{
    let cnt = 0;
    let sum = 0;
    for(let i=0; i<=7; i++){
        if(i%2 == 1){
            cnt++;
            sum = sum + i;
        }
    }
    console.log(cnt + ", "+sum);
}

4,16

 

 

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

답 2, 90

 

 

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

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

    console.log(result)
}

답 4

 

 

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

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

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

    console.log(solution(13, 33, 17));
}

답 NO

 

풀이

a=13, b=33, c=17일때

변수 answer에 yes를 넣어주고 max를 저장 해줍니다.

그리고 tot에 abc를 더한 값을  저장해줍니다.

조건문을 보면 a>b일때 max = a가 되고, 아니면 b가 됩니다. max는 33이 됩니다.

그후 밑의 조건문을 보면 c>max일때 max는 c가 됩니다. 하지만 아니므로 max는 여전히 33입니다.

또그 밑의 조건문을 보면 tot - max <= max일때, answer은 no로 변경 해줍니다.

tot - max의 값은 63 - 33  = 30이므로 30 <= 33가 맞으므로  answer은 'no'가 돕니다.

 

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(2, 5, 1));
}

답 1

 

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];
    console.log(solution(3, arr));
}

답 3