728x90
반응형

 

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

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

A

:  1    3   true

 

 

 

indexOf("a") 메서드는 문자열에서 a 문자의 첫 번째 인덱스를 반환한다.

lastindexOf("a") 메서드는 문자열에서 a 문자의 마지막 인덱스를 반환한다.

includes("a") 메서드는 문자열에 a 문자가 포함되어 있는지의 여부를 블린(true, false)으로 반환한다.

 

 

 

 

 

 

2. 다음의 결과값을 보고 빈 칸을 채우시오.

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

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

: str

 

빈 칸은 콜백 함수를 실행하는 부분이다.

따라서 callback 함수의 인자로 전달된 func 함수를 실행하기 위해 str이 들어가야 한다.

 

 

 

 

 

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

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

A

:1   2

 

 

함수 내부에서 arguments 객체를 사용하여 함수의 인자를 참조한다.

argument 객체는 0부터 인덱싱(자리값 배치)가 시작되기 때문에 arguments[0]은 첫 번째 인자인 1을, arguments[1]은 두 번째 인자인 2를 출력한다.

 

 

 

 

 

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

 

A :

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

2. 자바스크립트가 실행되었습니다.

 

 

func 함수는 num, name, word까지 세 개의 인자를 받아서 이를 this 객체의 프로퍼티로 할당한다.

이렇게 생성된 func 객체는 result1, result2, result3 메서드를 갖는 프로토타입 객체로부터 상속 받는다.

 

const 키워드를 사용하여 info1, info2, info3 변수에 새로운 객체를 생성한다.

각각의 객체는 func 생성자 함수를 통해 생성되며, 생성자 함수에서 정의한 세 개의 프로퍼티를 가지게 된다

 

info.result1(), info.result2()를 호출하여 객체의 result1, result2 메서드를 실행한다.

 

 

 

 

 

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

 

A :

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

 

 

func 함수는 세 개의 인자 num, name, word를 받아서 객체의 프로퍼티로 할당한다.

그리고 func.prototype.result 메서드를 정의한다.

result 메서드는 객체의 프로퍼티를 참조하여 문자열을 출력하는 역할을 한다.

 

const 키워드를 사용하여 info1, info2, info3 변수에 새로운 객체를 생성한다.

각각의 객체는 func 생성자 함수를 통해 생성되며, 생성자 함수에서 정의한 세 개의 프로퍼티를 가지게 된다.

info,result( )를 호출하여 객체의 result 메서드를 실행한다.

 

 

 

 

 

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

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

 

A :

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

 

 

func 함수는 하나의 인자 index를 받아서 "함수가 실행되었습니다."와 함께 인덱스를 출력한다.

callback 함수는 하나의 인자  num을 받아서 for 반복문을 통해 1부터 1까지만 반복하면서 num 함수를 호출한다.

여기서 num 함수는 func 함수를 참조하고 있다.

callback (func)를 호출하여 func 함수를 콜백으로 전달한다.

 

callback 함수에서 num(i)를 호출하면서 func(i) 함수를 실행하게 된다.

i가 1인 경우 func(1)이 호출되어 "함수가 실행되었습니다.1"을 출력하게 된다.

for 반복문에서 i의 범위가 1부터 1까지이기 때문에 func 함수는 한 번만 호출되고, 결과도 한 번만 출력된다.

 

 

 

 

 

 

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

{
    let num = 1;

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

}

 

A :

실행되었습니다. 

 

 

num이 1부터 시작해서 1씩 증가하면서 "실행되었습니다."를 출력하고, num이 5봐 작거나 같을 때까지 반복하는 do-while문이다.

 

반복문의 조건식이 do문 블록 안에서 작성되어 있기 때문에, 먼저 do문 블록 안의 코드가 한 번 실행되고 나서 num이 6이 되어 조건식이 false가 될 때까지 반복이 진행된다.

 

즉, num이 5일 때까지 "실행되었습니다."가 출력되고 num이 6이 되면 조건식이 fasle가 되어 반복이 종료된다.

 

 

 

 

 

 

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

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

}

 

 

A :

100*200*300*400*500

100-200-300-400-500

100200300400500

100 200 300 400 500

 

 

join 메서드는 배열의 요소를 하나의 문자열로 합쳐주는 메서드이다.

이 메서드는 하나의 문자열 인자를 받는데, 이 인자는 배열 요소들 사이에 끼워넣을 구분자 역할을 한다.

인자를 생략하면 기본값으로 ","가 사용된다.

 

따라서 text1에는 *로 구분된 문자열이, text2에는 -로 구분된 문자열이, text3에서는 구분자 없이 배열 요소들만 합쳐진 문자열이, text4에는 공백으로 구분된 문자열이 출력된다.

 

 

 

 

 

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

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

 

A :

func = str => str;

 

 

입력받은 문자열을 그대로 반환하는 함수를 변수 func에 할당하는 문제이다.

str이라는 매개변수를 가지고, 해당 매개변수를 그대로 반환하는 함수가 변수 func에 할당되는 것이다.

문자열을 인자로 전달하여, 그대로 반환하는 함수를 호출한 후 반환된 결과를 출력한다.

 

 

 

 

 

 

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

 

A :

1    9     3

 

i /= j  

:i를 j로 나눈 후, 그 결과를 i에 할당한다. 따라서 i =1.

 

j -= i 

:j(10)에서 i(10에서 1로 값이 바뀜)를 뺀 후 그 결과를 j에 할당한다. 따라서 j=9.

 

k %= j 

:k(30)를 j(9)로 나눈 나머지를 k에 할당한다. 따라서 k=3.

 

 

 

 

 

 

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

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

 

A :

0번 1번 2번 3번

 

 

변수 k를 0으로 초기화하고 반목문을 사용하여 0부터 3까지의 숫자를 출력한다.

반복문에서는 먼저 temp 변수에 k의 값을 할당한 후, k의 값을 1 증가 시킨다.

그리고 temp 변수에 할당된 값을 출력한다.

 

이후, i 변수가 1 증가하면서 반복문이 다시 실행된다.

이 과정은 i가 3일 때까지 반복된다.

 

 

 

 

 

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

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

 

A :

4   7

 

 

변수 num1을 3으로, 변수 num2를 7로 초기화 한 후, 조건문을 사용하여  num1이 5 미만이거나 num2가 8을 초과하는 경우에만 num1을 출력하는 문제이다.

 

조건문에서는 ++ 연산자를 사용하여 num1의 값을 증가 시키고, 그 결과를 비교한다.

만약 num1이 5 미만이라면 논리 연산자 ||의 뒷부분은 평가되지 않기 때문에 ++num2 > 8 연산은 수행되지 않는다.

 

 num1의 값이 1 증가하여 4가 되고, 이 값이 조건문에서 평가 된다.

이 값은 5 미만이므로, 조건문이 참이 된다. 따라서 num1은 4가 된다.

 

조건문 이후에는 num2의 값이 그대로 출력된다.

이는 조건문에서 ++num2 > 8 연산이 수행되지 않았기 때문이다.

 

 

 

 

 

 

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

A :

5    2   5

 

배열 num에 1, 5, 1, 2, 7, 5 값을 저장하고, 반복문을 사용하여 num의 짝수 인덱스에 해당하는 값을 출력하는 문제이다.

반복문에서는 i 변수가 0부터 5까지 1씩 증가하면서, (i+2)%2==0 조건식이 참이 되는 경우에 num의 i번째 값을 출력한다.

num 배열에서 2,4,6번째 요소가 각각 1,2,5이므로 이 값들이 순서대로 출력된다.

이는 반복문에서 i 변수의 값이 0일 때는 1번째 요소를, i변수의 값이 1일 때는 2번째 요소를 출력하는 방식으로 짝수번째 요소를 출력한다.

 

 

 

 

 

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

 

A :

9*7*5*3*1

 

for문에서는 i 변수가 9부터 시작하여 0까지 1씩 감소하며 반복한다

switch문에서는 현재 인덱스(i)에 해당하는 배열 num의 요소를 2로 나눈 나머지를 구한다.

만약 나머지가 1이라면(즉, 홀수 값이라면) console.log(num[i])문이 실행되어 현재 인덱스(i)에 해당하는 배열 num의 배열 요소가 출력된다.

 

반면 나머지가 1이 아닌 경우(즉, 짝수 값이라면) console.log("*")문이 실행되어, *이 출력된다.

 

 

 

 

 

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

 

A :

4   16

 

 for문에서는 0부터 7까지의 정수를 반복하며, if문에서는 현재 정수(i)가 홀수인지를 확인한다.

만약 현재 정수(i)가 홀수라면 cnt 변수를 1 증가 시키고(cnt++) sum 변수에 현재 정수(i)를 더한다. (sum = sum+i)

 

따라서 홀수의 갯수 4와 1+3+5+7=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)
}

 

A :

2    90

 

 

for문에서는 배열 data의 모든 요소를 반복하며 if문에서는 현재 요소가 80보다 큰지를 확인한다.

만약 현재 요소가 80보다 크다면 best 변수를 1 증가 시킨다. (best++)

이렇게 함으로써 배열 data 안에서 80보다 큰 수를 구한다.

 

두 번째 if문에서는 현재 요소(data[i])가 score 변수에 저장된 값도다 큰지를 확인한다.

만약 현재 요소 (data[i])가 score 변수에 저장된 값보다 크다면, score 변수에 값을 현재 요소 (data[i])의 값으로 바꾼다. (score=data[i]) 

이렇게 함으로써 배열 data에서 가장 높은 수를 계산한다.

 

best의 초깃값이 1, 한 번 증가 했으므로 best는 2가 되고,

배열에서 가장 높은 수가 score에 저장되기 때문에 90이 된다.

 

 

 

 

 

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

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

    console.log(result)
}

 

A :

4

 

a & b는 a와 b의 비트 AND 연산을 수행한 결과를 반환한다.

이진수로 나타내면 다음과 같다.

 

a: 0111

b: 0100

------------

     0100

 

이진수 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));
}

 

A :

NO

 

 

함수 solution에서는 먼저 answer 변수를 YES로 초기화 한다.

그리고 세 수 a, b, c를 모두 더한 값을 tot 변수에 저장한다.

a=13, b=33, c=17이므로 tot = a+b+c = 63이다.

다음으로 세 수 a, b, c 중에서 가장 큰 값을 max 변수에 저장한다.

셋 중 가장 큰 값은 b, 즉 33이므로 tot-max=30이 된다.

마지막으로  if(tot-max <= max)문에서 tot-max 값이 max 값보다 작으므로 anwser 변수가 NO로 변경된다.

따라서 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));
}

 

A :     1

 

함수 solution에서는 먼저 answer 변수를 선언한다.

그리고 if문을 사용하여 세 수 a, b, c 중에서 가장 작은 값을 answer 변수에 저장한다.

먼저 a와 b를 비교하여 answer를 비교하여 c가 작으면 c를 answer 변수에 저장한다.

 

따라서, 위의 코드를 실행하면 a=2, b=5, c=1이므로 answer 변수는 먼저 a=2로 초기화 된다.

그리고 c와 answer를 비교하여 c=1이 더 작으므로 answer 변수가 1로 변경된다.

따라서 solution(2, 5, 1)은 1을 반환하고, 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));
}

 

A :

3  (23, 53, 33)

 

배열 arr에서 각 요소의 일의 자리 숫자가 입력된 day와 같은 경우의 수를 세는 함수 solution이다.

 

함수 solution에서는 먼저 answer 변수를 0으로 초기화 한다.

그리고 for of문을 사용하여 배열 arr의 각 요소 x를 가져와서 if문을 사용하여 x의 일의 자리 숫자가 day와 같은 경우 answer 변수를 1씩 증가 시킨다.

 

arr 배열에 있는 숫자들 중에서 일의 자리 숫자가 3인 숫자는 23, 53, 33이므로 solution 함수는 3을 반환한다.

 

 

 

 

 

 

 

+ Recent posts