Javascript/시험 오답

03월 24일 쪽지시험_오답노트

아라라_ 2023. 3. 24. 16:22

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

Frederick Philips Brooks
Mythical Man-Month 저자
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);

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

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

해설

i /= j  ==> 10/10 ==>   i = 1

j -= i  ==> 10-1(위에서 값이 변하여 i가 1) ==>  j = 9

k %= j  ==> 30%9(위에서 값이 변하여 j가 9) ==> k = 3 

 


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

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

해설

i 의 값 0 1 2 3
temp의 값 0 1 2 3
k의 값 1 2 3 4
consle.log  0번 1번 2번 3번

 


 

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

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

우선 if문의 조건중 첫번째 조건에서 ++num은 4이므로 true이고 두번째 조건에서 ++num2는 8이므로 false입니다. ||은 둘중하나만 true여도  true이기 때문에 console.log(num1);이 실행됩니다 그리고 if문과 상관없이 if문이 끝나면 console.log(num2);이 실행됩니다. num1은 증가 연산자로 인해 4가 되고 num2도 if문에 있는 증가 연산자가 영향을 주지 못해 7이 됩니다.(gpt의 답은 8 / 선생님과 결과는 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("*");
        }
    }
}
답 : 9*7*5*3*1*

해설

for문에서 i는 9부터 시작하여 0에서 끝나며 배열 num을 반대 순서대로 출력하는 문제입니다. 

switch문을 보게되면 num[i] % 2의 값이 1이 되는 홀수는 case1이 실행되도록합니다. 나머지는 default가 실행되므로 

9는 홀수로 값이 1이 되어 case1이 실행되 9가 출력되고 8은 짝수로 default가 실행되므로 *이 출력됩니다.

그렇게 0까지 반복되면 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

해설

반복되는 for문에서 0부터 7까지 중에 if문으로 인해 홀수 인것만 안에 있는 내용이 적용이 되는 구조입니다. 

1,3,5,7만이 적용 되므로 cnt는 4이고 sum은 1+3+5+7이므로 16입니다. 

(계산까지 16으로 하고 적기는 13이라하는 능지...)


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

해설

비트 연산자 문제로 a = 7 = 0111 / b =  4 =  0100 인데 &(and연사자)이므로 둘다 참이여야 1이므로 0100가 답이 됩니다.

10진수로 변경하면 4가 되어 답이 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

 

 

수고하셨습니다!

 

오늘 시험 한컷평