기초부터 시작하는 코딩/Javascript

Javascript를 공부해 봅시다! - 번외편. 오답노트를 해보자(4)

kebab00 2023. 3. 24. 21:12

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

}

- 정답은 함수가 실행되었습니다. 함수가 실행되었습니다. 함수가 실행되었습니다. 함수가 실행되었습니다. 함수가 실행되었습니다.  입니다.

- num 이 5일 때 까지 실행이 되는 함수이기 때문에 console.log가 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);

}

- join문은 모든 데이터 사이에 join문의 값을 추가합니다. 

- 그렇기 때문에 정답은 

- 100 * 200 * 300 * 400 * 500

- 100 - 200 - 300 - 400 - 500

- 100 200 300 400 500

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

- 천천히 수를 대입해서 본다면 쉽게 풀 수 있습니다.

- i /= j 는 10 / 10 이기 때문에 i 는 1이 됩니다.

- 그리고 1이된 i 가 밑으로 대입이 되어서  j -= i 는 10-1 즉 9가 되는 것이죠

- 그리고 k 는 k 와 j가 나눈 값의 나머지 즉 30/9의 나머지 여서 3이 되는 것입니다.


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

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

- i 가 0부터 3까지 반복이 되니 4번 진행이 됩니다.

- temp = k, k= 0 이니 temp = 0 부터 시작을 하는 것입니다.

- 0 부터 4번 3까지 반복이 됩니다.

- 정답은 0번, 1번, 2번, 3번 입니다.


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

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

- if 문을 살펴보면 ++num1이 5 보다 작거나 ++num2 가 8보다 클 때 true가 되는 or을 사용한 조건문 입니다.

- or이니 둘 중 하나만 맞아도 실행이 된다는 것이죠 ++num1이 5보다 작으니 실행이 됩니다.

- 그래서 console.log(num1)은 4 이고 밑에 있는 두번째 실행문은 조건문과 관계없이 무조건 실행이 되어 7입니다.

- if 문 밖에 있으니 ++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 입니다.


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

-  i 가 9부터 0까지 반복되는 반복문 안에 조건에 맞을 때 멈추는 스위치 문이 들어가 있습니다.

- 스위치 문은 num[i]를 2로 나눈 후의 나머지 값이 1이면 num[i]를 아니면 *를 적는 조건문(?) 이네요

- 홀수일 때 num[i]값을 짝수일 땐 *를 적는 함수이군요

- 그래서 정답은 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 입니다.


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

- 저번에 풀었던 문제와 비슷하네요 그걸 또 틀린 저도 레전드...

- for 문 안에 if문이 2개가 있는 형식입니다.

- 두 개가 따로따로 돌아가는 것이죠

- 일단 첫 if문을 보면 data [i]의 값이 80보다 크면 best가 1씩 커지는 조건문입니다.

- 80보다 큰 수가 90밖에 없기 때문에 1이 된 것처럼 보이시면 저처럼 낚이신 겁니다.

- best가 1부터 시작하기 때문에  1+1이 되어 2가 되는 것이죠

- 두 번째 if문은 score의 값이 data [i]보다 작으면 score가 data [i]의 값이 되는 조건문입니다.

- 그래서 처음에 0이 70보다 작아서 70이 되었다가 80이 되었다가 75,60은 80보다 작으니 건너뛰고 90을 가져옵니다.

- 그래서 정답은 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 입니다.


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 입니다.

 끝!