JAVASCRIPT

틀린문제 오답풀이

진블로그 2023. 3. 24. 19: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);
}

풀이 : lastIndexof는 텍스트의 제일 마지막 부분을 가져 옵니다.

결과 확인하기
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");
}

풀이 : 아규먼트(Argument)는 함수(Function)에 입력으로 전달되는 값입니다. 함수는 이러한 아규먼트를 이용하여 실행되며, 실행 결과를 반환할 수도 있습니다. func("1", "2"); 라고 함수를 호출하면, arguments 객체는 ["1", "2"]와 같은 배열 형태로 할당됩니다. 이 때 arguments[0]은 첫 번째 인자인 "1"을, arguments[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 문은 while 문과 달리 조건식이 뒤에 위치하며, 먼저 실행부분을 한 번 실행하고, 그 다음 조건식을 평가하여 반복 여부를 결정합니다. 따라서 do-while 문은 조건식이 false 일지라도 최소한 한 번은 실행됩니다.

코드를 간단히 설명하자면, num 변수가 1로 초기화 되고, do 블록 내부에서는 num의 값을 1씩 증가시키면서 "실행되었습니다."라는 문자열을 출력합니다. 이 때, num의 값이 5보다 작거나 같을 때까지 실행을 반복하게 됩니다.

따라서 위 코드는 num이 1부터 시작하므로 "실행되었습니다." 문자열이 5번 출력되면서 num의 값은 6이 되며, while 조건식이 평가될 때 num <= 5가 false가 되어 반복이 종료됩니다. 

결과 확인하기
실행되었습니다.
실행되었습니다.
실행되었습니다.
실행되었습니다.
실행되었습니다.

 


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*600
100-200-300-400-500-600
100200300400500600
100 200 300 400 500 600

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이 됩니다.
j -= i; 의 값은 10 빼기 1이 되고 j의 값은 9로 변합니다.
% 연산자는 식을 나누고 나머지 값을 의미하므로 30을 9로 나눈 나머지는 3이 됩니다.

결과 확인하기
1, 9, 3

 


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

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

풀이 : 초기값 k가 0인경우 for문의 조건에 부합하므로 temp는 0이 들어가고 출력문에 의해 "0번" 이 출력 됩니다. 다음은 k++에 의해서 k는 1이 됩니다. 1은 for문의 조건에 맞고 출력문에서 "1번" 이 출력 됩니다. for문은 반복문이므로 조건인 3이하가 될 때까지 반복됩니다. 마지막으로 "3번" 이 출력 되고, k의 값은 4가 됩니다.

결과 확인하기
0번, 1번, 2번, 3번

 

 


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

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

풀이 : ++num1은 4이므로 5보다 작아 참이고, ++num2는 8이므로 8보다 크지 않습니다. || 연산자는 둘 중 하나만 참이어도 참이므로 console.log(num1)의 값은 4가 출력됩니다. console.log(num2)는 if문의 밖에 있습니다. 따라서 전역변수 num2인 7이 출력됩니다.

결과 확인하기
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("*");
        }
    }
}

 풀이 : switch 문은 특정 변수 또는 표현식의 값을 평가하고, 그 값에 따라서 다른 블록을 실행하는 제어문입니다. switch문에서 break가 빠지면 모든 값이 실행됩니다. for문은 평소와 다르게 초기값 9부터 0까지 내려가는 조건입니다. case 1은 식을 나눈 후 나머지가 1인 값을 의미합니다. 배열 안에 2로 나누었을때 나머지가 1인 값은 출력하고 아닌 값은 '*'을 출력합니다. 따라서 배열의 뒤에서부터 2로 나누었을 때 나머지가 1인 값 9, 아닌 값 8은 '*" ... 2로 나누었을 때 1인 값 1 아닌 값 0은 '*' 이 출력되어 
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

풀이 : for문의 조건에서 i의 값은 0부터 7까지 입니다. if문에서 i를 2로 나누었을 때 1인 경우에 변수 cnt에 1을 증가하고 sum에 sum과 i값을 더해줍니다. 0부터 7사이 2로 나누었을 때 나머지가 1이 되는 값은 1,3,5,7입니다. i가 1일 때 cnt는 1이 증가되어 1 sum은 1, i가 3일 때 cnt는 2 sum은 4, i가 5일 때 cnt는 3 sum은 9 i가 7일 때 cnt는 4 sum은 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)
}

풀이 : if문에서 data[i]값이 80보다 큰 경우는 배열 값이 90인 경우 입니다. if문의 조건에 만족하는 경우 변수 best값이 1이 증가하게 됩니다. 두번째 if문에서 score 값이 data[i]값보다 작은 경우 score는 data[i]값과 같은 값이 됩니다. 따라서 출력문에 best는 1이 증가한 값 2, score 는 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));
}

풀이 : console.log(solution(3, arr))은 매개변수 함수의 출력문입니다. 따라서 solution이 함수명인 인자값은 3과 arr이 입력 됩니다. for of문은 배열안의 요소값을 출력할 수 있습니다. if문에 의해 배열 안의 값을 10으로 나누고 나머지 값 day가 3인경우 answer에 1을 증가시켜 줍니다. arr 배열 내에서 10으로 나누었을 때 3이 되는 요소는 23, 53, 33입니다. 따라서 요소 23일때 answer이 1이 증가되어 1, 요소가 53일때 answer값이 1이 증가되어 2, 다음 33일 때 aswer은 3이 됩니다.

결과 확인하기
3

 

728x90