Blinking Hello Kitty Angel

javascript문제풀이

자바스크립트 기초 연습문제

xoouxa 2023. 3. 25. 12:43

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90

안녕하세요 o((>ω< ))o 오늘은 자바스크립트 테스트 오답풀이를 한 번 해보도록 하겠습니다.

여러분들도 함께 지금까지 공부 한 내용들을 제대로 배웠는지 간단하게 테스해보세요!

 

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

설명 : indexOf는 순서대로 a의 자리값을 반환하고, lastIndexOf는 뒤에서부터 a값을 찾고 앞에서부터 a의 자리값을 찾아 반환합니다. includes는 a가 포함되어 있다면 true를, 포함되어 있지 않다면 false를 반환하는데 a가 포함되어있기 때문에

true를 반환합니다.

 

 

02. 다음 결과값을 보고 빈칸을 작성하시오.

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

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

정답 : str

설명 : 콜백함수이기 때문에  str값이 들어가야 합니다.

 

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

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

정답 : 1 ,2

설명 : func가 1,2인데 a,b자리로 들어갑니다. 그렇게 된다면 아규먼트함수는 배열로 0번째 자리와 1번째 자리를

출력해야하기 때문에 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);

}

정답 : 실행되었습니다. 실행되었습니다. 실행되었습니다. 실행되었습니다. 실행되었습니다. 

설명 : while함수이기 때문에 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*3008400*500

100-200-300-400-500

100200300400500

100 200 300 400 500

 

 

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

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

정답 : func = 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();
}

정답 : 처음 i안에 10을 넣은 뒤 j와 나누면 1이 됩니다. 따라서 i는 1입니다.

j안에 10을 넣고 1을 빼면 값은 9가 됩니다.

 

 

 

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

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

정답 : 0번 1번 2번 3번 

설명 : k++은 k의 값을 증가시키는 것인데 temp는 ++가 되는 것이 아니므로 0부터 시작해 3까지 출력됩니다.

 

 

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

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

정답 : 4 7

설명 : ++num는 4가 되기 때문에 4<5 조건에 만족합니다.

++num는 8이 되기 때문에 8>8 조건에 만족하지 않아 false가 됩니다.

| | 연산자는 둘 중 하나라도 true이면 true이기 때문에 true값이 반환 돼

4와 7이 반환됩니다.

7이 반환되는 이유는 console.log(num2)가 괄호 밖에 있으므로 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

설명 : i 는 0 1 2 3 4 5 까지의 값인데 i에 +1을 해줘야 하기 때문에 1 2 3 4 5 6이라는 값을 출력합니다.

근데 나눠서 0이 되는 값을 구해야 하기 때문에 짝수를 뽑으면 2 4 6(자리수 : 1 3 5)의 결과가 나옵니다.

출력을 할 때 num[i]의 값을 출력해야 하는데 i는 배열 안에 있는 값을 뽑아야 하므로 배열 안에 있는 1 3 5 번째 자리에 있는 수는 5 2 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 *

설명 : switch 문에서 case1은 결과값의 나머지가 1이라는 뜻입니다. for(let i=9; i>=0; i++){ 이므로 num값이 뒤에서부터 읽힙니다. 그러면 역순으로 9 8 7 6 5 4 3 2 1 0이 되는데 나머지가 1이 나오는 홀수들은 9 7 5 3 1은 숫자로 출력되고 짝수는 *로 출력 돼 9 * 7 * 5 * 3 * 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

설명 : i % 2 == 1인 값에서 나머지가 1이 나오려면 i의 값은 1 3 5 7의 값이 나와야 합니다. 

i의 값이 총 4개이기 때문에 cnt++ = 4가 됩니다.sum의 초기값은 0이므로 0 + 1을 해주면 1, 1+3 = 4 , 4 + 5 = 9, 9+7=16이 되므로 결과값은 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+b+c의 값은 63입니다. 여기서 13>33 이 조건이 정립하지 않기 때문에 max=33이라는 값이 나오게 됩니다.

17 > 33 이 조건도 성립하지 않기 때문에 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

설명 : a,b,c의 값이 다 정해진 상태에서 비교해 보면 2<5이기 때문에 a=2가 됩니다.

또 1 < 5이기 때문에 이 값도 성립함으로서 answer의 값은 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

설명 : day는 3입니다. x % 10 = 3이 나와야 하는데 arr에 주어진 배열값에서 3이 나머지 값으로 출력되는 것은

23,53,33 세 개의 값이 나오기 때문에 정답은 3입니다.

 

🥰 오늘도 감사합니다.

'javascript문제풀이' 카테고리의 다른 글

정보처리기사 오답노트  (9) 2023.04.22
자바스크립트 테스트 오답풀이  (28) 2023.03.17
자바스크립트 기초 연습문제  (16) 2023.03.10