문제풀이

자바스크립트 문제풀이 4 재시험 풀이

이미사용 2023. 3. 26. 22:35
명언
-
728x90
반응형

1. 다음 결괏값이 -1인 것의 합을 구하시오.

{
    const str = "javascript refercence";

    str.indexOf("javascript");     
    str.indexOf("javascripts");     
    str.indexOf("j");              
    str.indexOf("J");               
    str.indexOf("a");              
    str.indexOf("ja");             
    str.indexOf("jv");              
    str.indexOf("refercence");      
    str.indexOf("r");              
    str.indexOf("re");              
    str.indexOf("javascript", 0);  
    str.indexOf("javascript", 1);   
    str.indexOf("refercence", 0);   
    str.indexOf("refercence", 11);  
    str.indexOf("refercence", 12);  
    str.indexOf("r", 7);            
    str.indexOf("r", 12);           
}

답 5개

 

 

풀이

indexOf()는 문자열을 검색하여, 주어진 값과 일치하는 첫 번째 위치값(index)을 반환합니다.

문자열을 검색하여, 주어진 값과 일치하는 것이 없으면 -1을 반환합니다.

대소문자를 구별합니다.

"문자열".indexOf(검색값, [위치값]은 위치값 부터 시작해서 문자열을 검색하며 주어진값과 일치하는 첫 번째 위치값을 반환합니다.

따라서

1번째 위치값은 0

2번째 위치값은 "javascripts" 라는 문자열이 없어서 -1

3번째 위치값은 0

4번째 위치값은 대소문자를 구별하기 때문에 대문자는 없으므로 -1

5번째 위치값은 1

6번째 위치깂은 0

7번째 위치값은 "jv"라는 문자열이 없어서 -1

8번째 위치값은 11

9번째 위치값은 6

10번째 위치값은 11

11번째 위치값은  0

12번째 위치값은 위치값을 1부터 시작해서 검색하는데 "javascript" 라는 문자열이 없으므로 -1

13번째 위치값은 11

14번째 위치값은 11

15번째 위치값은 위치값을 12부터 시작해서 검색하는데 "refercence" 문자열이 없으므로 -1

16번째는 11

17번째는 15

그러므로 답은 5입니다.

 

 

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

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

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

 

 

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

{
    function func(){
        let a = [];

        for(i=1; i<=5; i++){
            a += [i];
        }
        console.log(a);
    }
    func();
}

[1, 2, 3, 4, 5]

 

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

{
    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();
    info3.result3();
}

1. 함수가 실행되었습니다.
2. 자바스크립트가 실행되었습니다.
3. 제이쿼리가 실행되었습니다.

 

 

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

{
    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();
    info2.result();
    info3.result();
}

1. 함수가 실행되었습니다.
2. 자바스크립트가 실행되었습니다.
3. 제이쿼리가 실행되었습니다.

 

 

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

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

함수가 실행되었습니다.0
함수가 실행되었습니다.1
함수가 실행되었습니다.2
함수가 실행되었습니다.3
함수가 실행되었습니다.4
함수가 실행되었습니다.5

 

 

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

{
    let num = 0;

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

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

 

 

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

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

    const text1 = arr.join("*");
    arr.push("600");
    const text3 = arr.join("");
    arr.pop();
    const text4 = arr.join(" ");

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

100*200*300*400*500

100200300400500600

100 200 300 400 500

 

풀이

join은 배열 요소를 문자열로 결합하고 문자열로 반환 합니다. () 안에 띄어쓰기를 하거나  *등을 넣으면 배열사이사이에 적용됩니다.

push()는 배열 마지막 요소에 요소를 추가합니다.

pop()은 배열 마지막 요소를 제거합니다.

그 결과

text1은 100*200*300*400*500 이나온후에

psuh를 통해 배열 마지막에 600을 넣어 주었고

그결과 text3은 100200300400500600 이나오고

그후에 pop()을 통해 마지막 배열요소를 제거하여서

text4의 값은 100 200 300 400 500 이 됐습니다.

 

 

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

{
    let a, b = 10;

    for(let i=0; i<5; i++){
        a = i;
        b -= a;
    }
    console.log(a, b)
}

4 0

 

 

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

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

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

1

19

11

 

 

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

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

1번

2번

3번

4번

 

 

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

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

답 8

 

풀이

num1 =3 과 num2 = 7 의 변수가 있을때,

조건으로 ++num1 > 5 || num2++ < 1 일때, num1을 출력합니다.

그 후 num2를 출력합니다.

우선 || 은 두 조건중 하나라도 트루일때  num1을 출력하기 때문에 둘다 한번에 하지않고, 첫번째 조건을 실행 한후 그조건이 false일 경우 두번째 조건을 실행합니다.

그 결과 첫번째 조건은 num1은 3이지만 +1을 하여 4로 바뀌었고, 변수에도 4로 저장이 되었습니다. 하지만 조건이 맞지 않으므로 다음 두번째 조건을 실행합니다.

두번째 조건은 num2는 7이지만 +1을 하여 8로 바뀌었고, 변수에도 8로 저장이 되었습니다. 하지만 조건이 맞지 않아 두조건다 false이므로 num1은 출력 되지 않습니다.

하지만 num2는 조건식 밖에 있으므로 출력이 되는데 이때 조건식에서 +1이 적용되어 변수가 8로 저장되었으므로 num2는 8이 나옵니다.

 

 

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

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

답 1 1 7

 

풀이

for문을 통해 i<6이 성립 될때까지 반복하는데 조건으로 (i+2) % 2 의 값이 0일때 그 i의 배열의 값을 가져오는 식입니다

그 결과

i = 0 일때 (0+2) % 2 == 0이 되므로 0번째 배열 값을 출력합니다. (1)

i = 1 일때 (1+2) % 2 == 0이 아니라 1이 되므로 조건식에 해당이 안돼 출력이 안됩니다.

i = 2 일때 (2+2) % 2 == 0이 되므로 2번째 배열 값을 출력합니다. (1)

i = 3 일때 (3+2) % 2 == 0이 아니라 1이 되므로 조건식에 해당이 안돼 출력이 안됩니다.

i = 4 일때 (4+2) % 2 == 0이 되므로 4번째 배열 값을 출력합니다. (7)

i = 5 일때 (5+2) % 2 ==0이 아니라 1이 되므로 조건식에 해당이 안돼 출력이 안됩니다.

그래서 답은 1 1 7입니다.

 

 

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

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

** 1 ** 3 ** 5 ** 7 ** 9

 

 

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

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

답 4, 8

 

 

 

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

3 90

 

 

 

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

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

    console.log(result)
}

7

 

 

 

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

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

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

    console.log(solution(53, 93, 107));
}

YES

 

 

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(15, 12, 11));
}

11

 

 

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

1