728x90
반응형

 

 

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

{
    let i = 0;
    let sum = 0;
    
    while(i < 10){
        i = i+1;
        if( i % 3 == 0) sum -= i;
        if( i % 3 == 1) sum += i;
        if( i % 3 == 2) sum *= i 
    }

    console.log(sum) 
}

A : 129


반복문에서 변수 i를 초기값 0으로 설정하고 시작하며,  while 조건문에서 i가 10보다 작을 때까지 반복한다.

이 반복문에서 i는 1부터 10까지의 정수 값을 가진다.


if 조건문에서 i % 3은 i를 3으로 나눈 나머지 값을 나타냅니다. 이 값을 기준으로 다음의 작업을 수행한다.
 i % 3 == 0 : i가 3의 배수인 경우, sum에서 i를 뺍니다.
i % 3 == 1 : i를 3으로 나눈 나머지가 1인 경우, sum에 i를 더한다.
i % 3 == 2 : i를 3으로 나눈 나머지가 2인 경우, sum에 i를 곱한다.

실행 과정을 살펴보면 이렇다.


i = 1일 때, i % 3 == 1이므로 sum에 1을 더한다. (sum = 1)

i = 2일 때, i % 3 == 2이므로 sum에 2를 곱한다. (sum = 2)

i = 3일 때, i % 3 == 0이므로 sum에서 3을 뺀다. (sum = -1)

i = 4일 때, i % 3 == 1이므로 sum에 4를 더한다. (sum = 3)

i = 5일 때, i % 3 == 2이므로 sum에 5를 곱한다. (sum = 15)

i = 6일 때, i % 3 == 0이므로 sum에서 6을 뺀다. (sum = 9)

i = 7일 때, i % 3 == 1이므로 sum에 7을 더한다. (sum = 16)

i = 8일 때, i % 3 == 2이므로 sum에 8을 곱한다. (sum = 128)

i = 9일 때, i % 3 == 0이므로 sum에서 9를 뺀다. (sum = 119)

i = 10일 때, i % 3 == 1이므로 sum에 10을 더한다. (sum =129)

따라서 결과값은 129가 된다.

 


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

{
    let num = [10, 20, 30, 40, 50];
    let i, max, min;
    max = min = num[0];

    for(i=0; i<5; i++){
        if(num[i] > max) max = num[i];
        if(num[i] < min) min = num[i];
    }

    console.log(max, min);
}

A : 50 10

1. num 배열의 첫번째 요소 num[0]은 10이다. 따라서 변수 max와 min은 모두 10으로 초기화 된다.

2. for 반복문에서 i가 0일 때, num[0]은 10이므로 max와 min은 모두 10으로 유지된다.

3. for 반복문에서 i가 1일 때, num[1]은 20이므로 min은 20으로 대체되지 않고, max는 20으로 대체된다. (if문에서 max는 num[i]값과 현재의 max을 비교해서 큰 값으로 대체되며, min은 현재 저장된 수보다 num[i]의 값이 작을 경우 대체되기 때문)

4. for 반복문에서 i가 2일 때, num[2]는 30이므로 min은 30으로 대체되지 않고, max는 30으로 대체된다.

5. for반복문에서 i가 3일 때, num[3]은 40이므로 min은 40으로 대체되지 않고, max는 40으로 대체된다.

6. for 반복문에서 i가 4일 때, num[4]는 50이므로 min은 50으로 대체되지 않지만 max는 50으로 대체된다.

 

따라서 실행 결과는 50 10이 된다.

 


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

{
    function func(begin, diff, n){
        cnt = 1;
        ret = begin;
        while(true){
            cnt += 1;
            ret *= diff;
            if(cnt == n) return ret;
        }
    }

    console.log(func(1, 3, 4));
}

 A : 27

1. func 함수가 호출된다. 인자로 begin=1, diff=3, n=4가 전달된다.


2. cnt 변수와 ret 변수가 각각 1과 begin 값인 1로 초기화된다.


3. while 루프가 시작된다. while(true)는 항상 참이므로 무한 루프가 실행된다.


4. cnt 변수에 1이 더해지고, ret 변수에 diff 값인 3이 곱해진다. 이제 cnt는 2이고, ret은 3이 된다.


5. if 문에서 cnt와 n이 같은지 비교한다. cnt는 2이고, n은 4이므로 아직 같지 않기 때문에 while 루프가 다시 시작된다.


6. cnt 변수에 1이 더해지고, ret 변수에 diff 값인 3이 곱해집니다. 이제 cnt는 3이고, ret은 9가 된다.


7. if 문에서 cnt와 n이 같은지 비교한다. cnt는 3이고, n은 4이므로 아직 같지 않기 때문에 while 루프가 다시 시작된다.


8. cnt 변수에 1이 더해지고, ret 변수에 diff 값인 3이 곱해진다. 이제 cnt는 4이고, ret은 27이 된다.


9. if 문에서 cnt와 n이 같은지 비교한다. cnt는 4이고, n도 4이므로 같다.


10. return 문에서 ret 값을 반환합니다.


따라서 console.log(func(1, 3, 4))의 실행 결과는 27이 된다.


즉, func(1, 3, 4)는 1에서 시작해서 공차가 3인 등차수열을 4번째 항까지 계산한 결과인 27을 반환하는 함수이다.


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

{
    let i = 0;
    let sum = 0;
    while(i < 10){
        i = i + 1;
        if(i % 2 == 0){
            continue
        }
        sum += i;
    }

    console.log(sum)
}

A : 25

 

1. i 변수와 sum 변수가 각각 0으로 초기화된다.

2.  while 루프가 시작된다.  i는 1이므로 i % 2 == 0 조건문은 거짓이 된다. 그래서 sum 변수에 i 값인 1이 더해집니다. 따라서 sum은 1이 된다.

3. i 변수에 1이 더해져서 i는 2가 된다.

4. i % 2 == 0 조건문이 참이므로 continue 문이 실행된다. continue 문은 현재 반복을 종료하고, 다음 반복으로 넘어가게 한다. 따라서 sum 변수에는 2가 더해지지 않는다.


5. while 루프가 다시 시작됩니다. 이번에는 i가 3이므로 i % 2 == 0 조건문이 거짓이 된다. 그래서 sum 변수에 i 값인 3이 더해진다. 따라서 sum은 4가 된다.

6. 이후에도 마찬가지로 i가 홀수일 때만 sum에 더해지고, i가 짝수일 때는 continue 문이 실행되어 sum에 더해지지 않는다.
7. i가 10일 때 while 루프가 종료된다. 이때까지 sum에 더해진 값은 1, 3, 5, 7, 9로 총 25이다.


따라서 console.log(sum)의 실행 결과는 25가 된다.

 


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

{
    let num = [56, 4, 3, 65, 78];
    let temp;

    for(let i=0; i<1; i++){
        for(let j=0; j<num.length-i-1; j++){
            if(num[j]>num[j+1]){
                temp = num[j];
                num[j] = num[j+1];
                num[j+1] = temp;
            }
        }
    }

    console.log(num)
}

A : [4, 3, 56, 65, 78]

 

첫 번째 for 루프에서 i의 값은 0으로 설정되어 있으므로, 내부 루프가 한 번 실행된다.

내부 루프는 배열의 길이에서 i와 1을 뺀 만큼 반복하므로, 이 경우에는 num.length - 1 만큼 반복한다.

내부 루프에서는 인접한 두 항목을 비교하고, 만약 첫 번째 항목이 두 번째 항목보다 크다면 값을 교환한다.

그러나 첫 번째 for 루프에서 i를 0으로 설정하였기 때문에, 내부 루프는 단 한 번만 실행된다.

이렇게 되면, 배열의 첫 번째 요소와 두 번째 요소만 비교되고 나머지 요소들은 정렬되지 않은 채 그대로 남게 된다.

따라서 [4, 3, 56, 65, 78]이 된다.


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

{
    let num = [56, 4, 3, 65, 78];
    let min = 9999;

    for(let i=0; i<10; i++){
        if(min > num[i]){
            min = num[i];
        }
    }

    console.log(min)
}

A : 3

 

먼저, 변수 min을 배열 num의 첫 번째 요소로 초기화한다.

그리고 for 루프를 사용하여 배열 num의 모든 요소를 탐색하면서 min과 현재 요소를 비교한다.

만약 현재 요소가 min보다 작으면 min 값을 현재 요소로 업데이트한다.


for 루프는 배열 num의 2번째 요소부터 마지막 요소까지 탐색한다.

첫 번째 요소는 이미 min에 할당되었기 때문에 탐색할 필요가 없기 때문에 i를 1부터 시작하여 num.length보다 작을 때까지 for 루프를 실행한다.

각 루프에서는 num[i]와 min을 비교하여 num[i]가 더 작으면 min 값을 num[i]로 업데이트한다.

이를 모든 루프에서 반복하면서, min에는 배열 num에서 가장 작은 값인 3이 할당되게 된다.

따라서 console.log(min)을 호출하면 3이 출력됩니다.

 


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

{
    let num = [3, 4, 5, 7, 8];
    let temp;

    for(let i=0; i<=3; i++){
        for(let j=i+1; j<=4; j++){
            if(num[i] < num[j]){
                temp = num[i];
                num[i] = num[j];
                num[j] = temp;
            }
        }
    }

    console.log(num);
}

A : [3, 4, 5, 7, 8]

배열 num은 [3, 4, 5, 7, 8]으로 초기화되어 있다. 

따라서 바깥쪽 루프의 첫 번째 반복에서는 i=0일 때 안쪽 루프가 1부터 4까지 반복하게 되고, 배열 num[0]부터 num[4]까지의 요소들끼리 대소관계를 비교한다. 

이때 num[0]은 3이고, num[1]은 4이다.

 3이 4보다 작기 때문에 if문은 건너뛰고, 다음 요소인 num[2]와 비교한다.

3은 5보다 작기 때문에 if문을 건너뛰고, 3은 7보다도 작기 때문에 다시 if문을 건너뛰고, 3은 8보다도 작기 때문에 다시 if문을 건너뛰게 된다.

그러면 바깥쪽 루프의 두 번째 반복에서는 i=1일 때 안쪽 루프가 2부터 4까지 반복하게 되고, num[1]부터 num[4]까지의 요소들끼리 대소관계를 비교한다.

이때 num[1]은 4이고, num[2]는 5이다.

4가 5보다 작지 않기 때문에 if문에 들어가서 num[1]과 num[2]를 교환한다. 그러면 배열 num은 [3, 5, 4, 7, 8]이 됩니다.

이제 바깥쪽 루프의 세 번째 반복에서는 i=2일 때 안쪽 루프가 3부터 4까지 반복하게 되고, num[2]부터 num[4]까지의 요소들끼리 대소관계를 비교한다.

이때 num[2]는 4이고, num[3]은 7이다.

num[2]와 num[3]의 값을 비교하여 큰 값을 앞으로 이동시킨다.

따라서 num[2]와 num[3]의 위치가 바뀌어 [3, 4, 7, 5, 8]이 된 후, 안쪽 루프의 두 번째 반복에서 j는 4가 되고, num[4]는 8이다.

따라서 num[3]와 num[4]의 값을 비교하여 큰 값을 앞으로 이동시킨다.

따라서 num[3]와 num[4]의 위치가 바뀌어 최종적으로 [8, 7, 5, 4, 3]이 되게 되는 것이다.

 


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

{
    let num = [1,2,3,4,5];
    let sum = 1;
    
    function func(arr){
        for(let i=0; i<arr.length; i++) {
            sum += arr[i];
        }

        for(let i=0; i<arr.length; i++){
            if(arr[i] % 2 == 0) sum -= arr[i];
        }
        return sum;            
    }

    console.log(func(num));
}

A : 10

 

num이라는 배열과 sum이라는 변수를 정의한다.

sum은 초기값으로 1을 가지고 있다.


func이라는 함수를 정의한다.

이 함수는 배열을 입력받아 배열의 합에서 짝수 요소의 값을 빼서 그 결과값을 반한다.


func 함수 내에서는 for 반복문을 사용하여 배열의 모든 요소들을 순회하면서 sum 변수에 더해준다.


그 후, 다시 for 반복문을 사용하여 배열의 모든 요소들을 순회하면서, 각 요소가 짝수인지 검사한다.

 만약 짝수라면, sum 변수에서 해당 요소의 값을 빼준다.


최종적으로 func(num) 함수를 호출하여 반환된 값을 출력한다.


따라서, num 배열의 요소들의 합은 1+2+3+4+5 = 15이고, 짝수인 요소는 2와 4이므로, 이들의 값을 sum 변수에서 빼주면 최종적으로 15-2-4 = 9가 된다. 

그러나 함수 내에서 sum 변수를 초기값으로 1을 가지고 시작했기 때문에, 최종 결과값에 1을 더해준 10이 출력되게 된다.

 


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

{
    let num = ["0","1","2","3","4","5","6","7","8","9"];
    let sum = 100;

    for(let i=0; i<num.length; i++){
        num[i] = i+1;
    }
    for(let i=0; i<num.length; i++){
        if(i % 3 == 1){
            sum -= num[i];
        }
    }
    console.log(sum)
}

A: 85

num 배열의 요소들을 문자열에서 숫자로 변환한다.

즉, num 배열은 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이 된다.

그 후, for 루프를 사용해서 배열의 각 요소에 접근하면서, 해당 요소의 인덱스가 3의 배수가 아닌 경우 sum 변수에서 해당 요소의 값을 뺀다.

인덱스를 0부터 시작하기 때문에, i % 3이 1인 경우는 1, 4, 7번째 요소이다. 이 경우 해당 요소의 값을 sum 변수에서 뺀다.

따라서, sum의 초기값이 100이고, 1, 4, 7번째 요소 (2, 5, 8)의 값의 합인 15를 sum에서 뺀 값이 결과값으로 출력된다.

따라서 결과값은 85가 된다.

 


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

{
    let arr = [1,2,3,4,5];
    let temp = [1,2,4,6,8];
    let idx = 0;
    let flag = true;

    for(let i=0; i<arr.length; i++){
        flag = false;
        if(arr[i] == temp[i]){
            flag = true;
        }
        if(!flag){
            temp[idx++] = arr[i];
            console.log(temp[idx]);
        }
    }
}

A : 2 4 6

이 코드는 arr 배열과 temp 배열을 비교하여, 같은 인덱스 위치에 있는 값이 같으면 temp에 그대로 유지하고, 다르면 temp에 arr의 값을 복사하는 코드이다.

처음에 idx는 0으로 초기화되어 있습니다. 

그리고 flag는 true로 초기화되어 있습니다. 

그 후 arr 배열을 순회하면서, 같은 위치의 값이 다른 경우, temp 배열의 해당 위치에 arr의 값을 복사하고, idx를 1 증가시키고, temp[idx] 값을 출력합니다.

처음에 arr과 temp 배열이 같으므로, flag은 true이고, temp[0]의 값은 1입니다. 

그리고 arr[2]와 temp[2]의 값이 다르므로, temp[1]의 값을 arr[2]의 값인 3으로 업데이트합니다. 

이후 idx는 2가 되어 있습니다.

그리고 arr[3]과 temp[3]의 값이 다르므로, temp[2]의 값을 arr[3]의 값인 4로 업데이트합니다. 

이후 idx는 3이 되어 있습니다.

마지막으로 arr[4]와 temp[4]의 값이 다르므로, temp[3]의 값을 arr[4]의 값인 5로 업데이트합니다. 

이후 idx는 4가 되어 있습니다.

따라서 출력되는 값은 temp[1], temp[2], temp[3]의 값인 2, 4, 6이 됩니다.


11.다음은 최소값을 출력하는 예제이다. 밑줄에 알맞은 표현을 작성하시오.

    let num = [30,40,24,80,99];
    let min = 9999;

    for(let i=0; i<5; i++){
        if(min > num[i]){
            min = ________;
        }
    }

    console.log("최소값 : ", min);
}

A : num[i]

반복문을 실행하면서 배열 num에서 가장 작은 값을 찾기 위해, 현재까지 찾은 최소값 min과 비교하면서 더 작은 값을 찾습니다. 반복문이 한번 실행될 때마다 num 배열의 다음 요소를 확인하고, 해당 요소가 현재까지 찾은 최소값보다 작다면 min 값을 해당 요소의 값으로 갱신합니다. 이렇게 반복문을 실행하면서 min 변수에는 num 배열의 가장 작은 값이 할당됩니다.

따라서 min과 num[i]를 비교해야 한다.


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

{
    let s1 = "Remember november";
    let s2 = s1.slice(0, 3) + s1.slice(12, 16);
    let s3 = "r AND you";

    console.log(s2 + s3)
}

A : Remember And you 

 

1. 문자열 "Remember november"를 변수 s1에 저장합니다.
2. s1의 첫 세 글자와 12번째부터 15번째까지의 문자열을 합쳐 새로운 문자열 s2를 만듭니다. 이 결과 s2는 3. "Rembernovem"이 됩니다.
4. 문자열 "r AND you"를 변수 s3에 저장합니다.
5. s2와 s3를 합쳐서 출력합니다. 따라서 출력 결과는 "Rembernovemr AND you"가 됩니다.

 


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

{
    let x = 1;

    console.log( !(x>0) );
    console.log( x>0 || x<4 );
    console.log( x<<2 );
    console.log( x&2 );
    console.log( x&3 );
}

A : false true 4 0 1

!(x>0) : x가 0 이하인지 검사하여 그 결과의 반대인 false가 출력됩니다.


x>0 || x<4 : x가 0보다 크거나 4보다 작은지 검사하여 그 결과인 true가 출력됩니다. x의 값이 1이기 때문에 true가 됩니다.


x<<2 : x의 비트를 왼쪽으로 2칸 이동시킨 결과인 4가 출력됩니다. 1의 비트를 왼쪽으로 2칸 이동시키면 100이 되기 때문입니다.


x&2 : x와 2의 비트 AND 연산을 수행한 결과인 0이 출력됩니다. 1의 비트와 2의 비트를 AND 연산하면 모두 1인 비트는 없기 때문입니다.


x&3 : x와 3의 비트 AND 연산을 수행한 결과인 1이 출력됩니다. 1의 비트와 3의 비트를 AND 연산하면 둘 다 1인 비트가 있기 때문입니다.

 


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

{
    let num = 0;
    let i = 1;

    while(i<=50){
        if(i%7 == 0){
            num += i;
        }
        i++;
    }
    console.log(num)
}

A : 196

반복문을 통해 1부터 50까지의 수를 순회하며, 각 수를 7로 나누어 떨어지는지 확인합니다. 나머지 연산자 %를 이용해 i를 7로 나누었을 때 나머지가 0이면 i는 7의 배수입니다. 이 경우, num 변수에 i를 더합니다.

따라서 7, 14, 21, 28, 35, 42, 49의 합인 196이 결과값으로 나오게 됩니다.

 


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

{
    let result = 0;
    for(let i=1; i<999; i++){
        if(i%3==0 && i%2 !=0){
            result = i;
        }
    }
    console.log(result);
}

A : 993

처음에 result는 0으로 초기화됩니다. 

그리고 반복문에서 i가 3의 배수이면서 2의 배수가 아니라면, result에 i를 할당합니다. 

이렇게 하면, 반복문이 종료될 때까지 result는 가장 큰 3의 배수이면서 2의 배수가 아닌 값이 됩니다.

반복문에서 마지막으로 i 값이 998일 때, result에는 993이 할당됩니다. 

이는 3의 배수이면서 2의 배수가 아닌 가장 큰 값이기 때문입니다. 

따라서 console.log(result)를 실행하면 993이 출력됩니다.


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

{
    function func(num){
        if(num <= 1){
            return 1;
        } else {
            return num + func(num - 2);
        }
    }
    function main(){
        let num = 5;
        console.log(func(num))
    }
    main();
}

 A : 9

함수 func는 인자 num이 1 이하일 때는 1을 반환하고, 그렇지 않을 경우 num에 2를 뺀 값과 num을 더한 값을 반환합니다.

이 함수가 호출되면, main 함수에서 인자 num으로 5를 넘겨줍니다. 그러면 func(5)가 호출됩니다.

func(5)는 5 + func(3)을 반환합니다. 여기서 func(3)은 3 + func(1)을 반환합니다. func(1)은 1을 반환하므로, func(3)은 4를 반환합니다. 그러므로 func(5)는 5 + 4인 9를 반환합니다.

따라서 console.log(func(num))에서 출력되는 값은 9입니다.


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

{
    let a=1, b=1, num;

    for(let i=0; i<6; i++){
        num = a + b;
        a = b;
        b = num;
    }
    console.log(num)
}

A : 21

피보나치 수열의 7번째 값을 출력하는 코드입니다. 

피보나치 수열은 0과 1로 시작하며, 이전 두 항의 합이 다음 항이 되는 수열입니다.

따라서, 처음에 a와 b는 각각 1로 초기화 되며, for loop에서는 i가 0일 때부터 5일 때까지 num에 a와 b를 더한 값을 할당하고, a와 b를 각각 b와 num으로 업데이트합니다.

i = 0: num = 2, a = 1, b = 2

i = 1: num = 3, a = 2, b = 3


i = 2: num = 5, a = 3, b = 5


i = 3: num = 8, a = 5, b = 8


i = 4: num = 13, a = 8, b = 13


i = 5: num = 21, a = 13, b = 21


따라서, 마지막으로 num에 할당된 값인 21이 출력됩니다.


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

{
    function func(num1, num2){
        let res = 1;
        for(let i=0; i<num2; i++){
            res *= num1;
        }
        return res;
    }
    let res = func(2, 10);

    console.log(res)
}

A : 1024

함수 func는 인자로 num1과 num2를 받습니다. num1은 밑(base)이 되는 수이고, num2는 지수(exponent)입니다. 함수 내에서 for문을 사용하여 res를 num2번 곱하게 됩니다.

따라서 func(2, 10)을 호출하면, 2의 10승인 1024를 계산하고 이를 변수 res에 할당합니다. 마지막으로 console.log(res)를 호출하면, 1024가 출력됩니다.



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

{
    let a = func(4);

    for(let i=0; i<a.length; i++){
        console.log(a[i]);
    }

    function func(n){
        let num = [];
        for(let i=0; i<n; i++){
            num[i] = i;
        }
        return num;
    }
}

A : 0 1 2 3

주어진 코드에서 `func` 함수가 먼저 호출되는데, 이 함수는 인자로 숫자 `n`을 받아 0부터 n-1까지의 숫자를 배열에 담아 리턴합니다. 

`func(4)`를 호출하면 `[0, 1, 2, 3]`을 반환합니다.

그 다음에는 `a` 변수가 이 함수의 반환값으로 할당되는데, 따라서 `a` 변수는 `[0, 1, 2, 3]`이 됩니다.

마지막으로 `a` 배열의 요소들을 순서대로 출력하는 반복문이 실행됩니다. 

따라서 `0`, `1`, `2`, `3`이 차례로 출력되게 됩니다. 


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

{
    let a = 3, b = 4, c = 3, d = 5;

    if( (a == 2 | a == c) & !(c > d) & (1 == b ^ c != d) ){
        a = b + c;
        if( 7 == b ^ c != a ){
            console.log(a);
        } else {
            console.log(b);
        }
    } else {
        console.log(a + b)
    }
}

A : 7

첫 번째 조건문에서는 a가 2이거나 c와 같은지 확인하고, 두 번째 조건문에서는 c가 d보다 크지 않은지 확인하고, 세 번째 조건문에서는 b와 c가 같지 않거나 c와 d가 같은지 확인합니다. 각 조건이 모두 참이면 첫 번째 if문의 코드 블록이 실행됩니다.

먼저 a에 b와 c의 합을 할당하고, 그 다음에 다시 한 번 조건문을 실행합니다. 이번에는 7과 b, c, a 중 하나와 같지 않은 것을 찾습니다. 여기서는 7과 a와 같지 않은 것을 찾습니다. 만약 이 조건이 참이면 a를 출력하고, 아니면 b를 출력합니다.

주어진 코드에서 a, b, c, d의 값에 따라 조건문이 참이 될 수도 있고 아닐 수도 있습니다. 하지만 조건문이 참이 된다면, a에 b와 c의 합인 7이 할당되고, 다시 조건문이 실행됩니다. 이번에는 7과 a가 같지 않으므로 a가 출력됩니다. 따라서 결과값은 7이 됩니다.


 

 

MYSQL  / 정보처리 기능사

01. SQL문의 빈칸을 완성하시오.

[학생] 테이블에서 전화번호가 NULL 값이 아닌 학생명을 모두 검색하기 위한 SQL문의 작성하시오.

SELECT 학생명 FROM 학생 WHERE 전화번호 _____;

 A : IS NOT NULL

(NULL 값이 아니기(NOT) 때문에 NULL 값이 아니다 라는 뜻의 IS NOT NULL)

 

02. SQL문의 빈칸을 완성하시오.

사용자 "HWANG"에게 테이블을 생성할 수 있는 권한을 부여하기 위한 SQL문을 작성하시오.

_____ CREATE TABLE _____ HWANG

A : GRANT to

(권한을 부여하는 명령어는 GRANT to이다)

 

03. SQL문의 빈칸을 완성하시오.

[성적] 테이블에서 점수가 90점 이상 95점 이하인 '컴퓨터공학과' 학생의 정보를 검색한 SQL문을 작성하시오.

SELECT * FROM 성적 WHERE (점수 _____ 90 _____ 95) AND 학과 = '컴퓨터공학과';

A : BETWEEN, AND

(90점 이상 95점 이하 즉, 90~95 사이에 있기 때문에 BETWEEN 사용)

 

04. SQL문의 빈칸을 완성하시오.

[성적] 테이블에서 점수가 높은 학생 순으로 이름(Name)과 점수(Score)가 출력되도록 SQL문을 작성하시오.

SELECT Name, Score FROM 성적 _____ BY Score _____

A : ORDER DESC

(정렬하도록 하는 구문은 ORDER이며, 최고점에서 최하점 즉, 내림차순으로 정렬하기 위해 DESC 사용)

 

05. SQL문의 빈칸을 완성하시오.

[학생] 테이블에서 '안중근' 학생의 점수를 95점으로 갱신하는 SQL문을 작성하시오.

_____ 학생 _____ 점수 = 95 WHERE 이름 = "안중근";

A : UPDATE SET

(정보를 갱신(업데이트) 하기 때문에 UPDATE SET 사용)

 

06. SQL문의 빈칸을 완성하시오.

[학생] 테이블에서 '주소' 속성을 추가하는 SQL문을 작성하시오.

_____ TABLE 학생 _____ 주소 VARCHAR(20)

A : ALTER ADD

(테이블에 속성을 추가시 ALTER와 함께 추가하다인 ADD를 사용)

 

07. SQL문의 빈칸을 완성하시오.

[학생] 테이블에서 '이'로 시작하는 학생들의 학번을 검색하여 학년이 높은 학생 순으로 출력하는 SQL문을 작성하시오.

SELECT 학번 FROM 학생 WHERE 이름 = "_____" ORDER BY 학년 _____

A : 이%, DESC

('이'로 시작하기 때문에 이%를, 내림차순이기 때문에 DESC를 사용)

 

08. SQL문의 빈칸을 완성하시오.

[학생정보] 테이블과 [학과정보] 테이블을 결합하여 학생명과 학과명을 출력하는 SQL문을 작성하시오.

SELECT A.이름, B.학과명 FROM 학생정보 A _____ 학과정보 B ON A.학과 = B.학과 

A : JOIN

(테이블 병합 시에는 JOIN을 사용)

 

09. SQL문의 빈칸을 완성하시오.

[Exam] 테이블의 모든 레코드를 지우기 위한 명령어 SQL문을 작성하시오.

_____ from Exam

A : DELETE 

(모든 레코드 지우기(DELETE)이기 때문에 DELETE 사용)

 

10. SQL문의 빈칸을 완성하시오.

[Exam] 테이블의 구조를 변화시키며 삭제하기 위한 명령어 SQL문을 작성하시오.

_____ from Exam

A : DROP

(테이블을 완전 삭제 시키기 위해서 DROP을 사용)

 

 


01. 다음 빈칸의 내용을 작성하시오.

( ① ) : 물리(Physics) 계층에서 데이터 전송을 하기 위해 사용하는 데이터 단위
( ② ) : 네트워크(Network) 계층에서 데이터 전송을 하기 위해 사용하는 데이터 단위

A : bit, 패킷

 

02. 다음이 설명하는 용어를 작성하시오.

릴레이션에서 하나의 속성이 취할 수 있는 동일한 타입의 원자값들의 집합을 의미하는 것을 무엇이라 하는지 쓰시오.

A : 도메인

 

03. 다음이 설명하는 용어를 작성하시오.

모든 창을 최소화하여 바탕화면을 보기 위한 윈도우 단축키는 무엇인지 작성하시오.

A : 윈도우 키 + D, 윈도우 키 + M

 

04. 다음이 설명하는 용어를 작성하시오.

한 릴레이션 내에 있는 후보키 중에 하나 이상의 속성들의 집합으로, 구성된 키의 모든 튜플에 대해 유일성(Unique)은 만족하지만, 최소성(Minimality)은 만족하지 못하는 것이 무엇인지 작성하시오.

A : 슈퍼키 (SUPER KEY)

 

05. 다음이 설명하는 용어를 작성하시오.

데이터베이스에서 릴에이션 내의 각 행을 레코드라고 하며, 관련 테이블에서 행한 수치 이상으로 혼합된 자료 요소를 의미, 각 개체들의 각각의 정보를 표현하는 것이 무엇인지 작성하시오.

A : 튜플

 

06. 다음이 설명하는 용어를 작성하시오.

CPU(중앙처리장치)와 입출력 장치 간의 속도 차이를 완화하기 위해 사용하는 시스템으로, 대표적으로 프린터에서 사용하는 기능은 무엇인지 쓰시오.

A : 스풀링 ( or 스풀)

(흔히 문서를 프린트 하면서 인터넷 서핑을 하거나 하는 일을 스풀링이라고 함)

 

07. 다음이 설명하는 용어를 작성하시오.

전기적인 연결, 물리적 설계, 데이터 전송 등에 이용되는 OSI 계층은 무엇인지 작성하시오.

A : 물리계층

 

08. 다음이 설명하는 용어를 작성하시오.

릴레이션 내의 데이터를 변경하거나 삭제할 때, 다른 개체가 해당 개체를 참조하고 있을 경우 변경 및 삭제를 취소하는 명령어는 무엇인지 쓰시오.

A : RESTRICT

 

09. 다음이 설명하는 용어를 작성하시오.

네트워크상에서 IP주소를 물리적 주소(MAC)로 대응시키기 위해 사용되는 프로토콜이다.
IP address를 LAN 카드의 물리적 주소인 MAC 주소로 변환한다.

A : ARP

 

10. 다음이 설명하는 용어를 작성하시오.

하나의 작업을 수행하기 위해 필요한 연산들의 집합이다.
데이터베이스에서 논리적인 작업의 단위를 의미한다.
원자성, 일관성, 독립성, 지속성 등의 특징을 있다.

A : 트랜잭션

728x90
반응형

 

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

let num = 0;

    while(false){
        num++;
        if( num == 3 ){
            continue;
        }
        if( num > 10 ){
            break;
        }
    }
    console.log(num);

 

A

:  0

 

while문의 조건이 false로 설정되어 있기 때문에 while문이 실행되지 않는다.

따라서 변수는 0으로 초기화 된 이후 값이 변하지 않는다.

 

 

 

 

 

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

let a = 6, b = 9, c = 3, result;
    result = ++a + b++ + ++c;

    console.log(result);
    console.log(a+b+c);

 

A

: 20       21

 

해당 코드를 실행하면 변수 a, b, c가 순서대로 6, 9,3으로 초기화 된다.

그리고 다음 줄에서 변수 result에 ++a + b++ + ++c를 대입한다.

 

여기서 ++a 변수는 a를 1 증가시킨 후 그 값을 사용하므로 7이 되며,

b++는 변수 b를 현재 값인 9를 사용한 후에 1을 증가시키므로, 이항 연산의 결과는 9가 된다.

++c는 변수 c를 1 증가시킨 후 그 값을 사용하므로 4가 됩니다. 따라서 result 변수에는 7 + 9 + 4 = 20이 대입된다.

마지막으로 console.log(a+b+c)를 실행하면, a와 c는 이미 1씩 증가한 상태이므로 각각 7과 4가 되어있다.

b는 이전 연산에서 1 증가했으므로 10이 됩니다. 따라서 console.log(a+b+c)는 7+10+4 = 21을 출력한다.

 

 

 

 

 

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

function func(){
        let a = [];

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

 

:  1   2  3  4   5

 

해당 코드는 함수 func()를 정의하고, 함수 내에서 빈 배열 a를 선언합니다.

그리고 for 루프를 이용하여 1부터 5까지의 숫자를 배열 a에 추가한다.

그런데 배열에 값을 추가할 때 a += [i];와 같이 문자열 연결 연산자인 +=를 사용했는데, 이는 배열에 값을 추가하는 올바른 방법이 아니다.

올바른 방법은 a.push(i)와 같이 push() 메서드를 사용하는 것이다.

따라서 func() 함수의 실행 결과는 [1, "2", "3", "4", "5"]와 같이 배열의 첫 번째 요소는 숫자 1이지만 나머지 요소는 모두 문자열로 변환되어 들어갑니다. 이는 배열에 값을 추가할 때 문자열 연결 연산자를 사용했기 때문이다.

 

 

 

 

 

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

let arr = [3,4,1,4,1,3,4,9,8,3];
        
    for(let i=0; i<10; i++){
        if(i % 3 == 2){
            console.log(arr[i]);
        }
    }

    console.log(sum);

:  1    3   8

 

반복문이 실행되면 i는 0부터 9까지 총 10번 반복하게 됩니다. 그리고 각 반복마다 i가 3으로 나누었을 때 나머지가 2인지 검사하게 된다..

배열 arr에서 0번째 원소는 3이며, i=0일 때는 조건식이 false가 되어 아무 동작도 하지 않는다. 

1번째 원소도 마찬가지이다.


2번째 원소는 1이며, i=2일 때 조건식이 true가 된다. 

따라서 console.log(arr[i]) 문장이 실행되어 1이 출력된다.

3번째 원소는 4이며, i=3일 때도 조건식이 false가 되어 아무 동작도 하지 않는다. 

4번째 원소도 마찬가지이다.

5번째 원소는 3이며, i=3일 때 조건식이 true가 된다.

따라서 console.log(arr[i]) 문장이 실행되어 4가 출력된다.

6번째 원소는 4이며, i=5일 때는 조건식이 false가 되어 아무 동작도 하지 않는다.
7번째 원소는 9이며, i=6일 때도 조건식이 false가 되어 아무 동작도 하지 않는다.

8번째 원소는 8이며, i=7일 때 조건식이 true가 돤다.

따라서 console.log(arr[i]) 문장이 실행되어 9가 출력된다.

9번째 원소는 3이므로, i=8일 때는 조건식이 false가 되어 아무 동작도 하지 않는다.

 

 

 

 

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

function func(num1, num2){
        if(num1 > num2) return num1
        else return num2
    }
    console.log(func(17, 23) + func(50, 40))

 

A

:   73

 

func라는 함수를 정의하고, 해당 함수를 호출한 결과를 출력하는 코드이다.
func 함수는 두 개의 인자 num1과 num2를 받아서, 만약 num1이 num2보다 크다면 num1을, 그렇지 않다면 num2를 반환하는 동작을 한다.
따라서 func(17, 23)의 결과는 23이 되고, func(50, 40)의 결과는 50이 된다.

이 두 값을 더한 결과인 73이 console.log로 출력된다.

 

 

 

 

 

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

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

 

A  : 

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

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

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

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

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

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

 

 

func 함수는 하나의 인자 index를 받아서, 해당 인자를 문자열과 함께 출력하는 역할을 한다.
callback 함수는 하나의 인자 num을 받아서, 0부터 5까지의 수를 num 함수의 인자로 넘겨준다.

이때 num은 함수이며, 함수를 인자로 받아서 실행하는 고차함수[각주:1]이다.
따라서 callback(func) 코드는 func 함수를 인자로 받아서 실행한다.

 callback 함수에서는 num(i)를 0부터 5까지 반복해서 실행하므로, func 함수는 6번 호출된다.

 

 

 

 

 

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

 for(let i=1; i<=5; i++){
        console.log(i);

        if(i == 4){
            break;
        }
    }

 

:    1   2   3   4  

 

위 코드는 1부터 5까지의 숫자를 출력하고, 숫자가 4일 때 반복문을 종료하는 코드이다.

for문을 사용하여 i 변수를 1부터 5까지 증가시키면서, 각 i 값을 console.log로 출력한다.

그리고 if문을 사용하여 i가 4일 때, break 키워드를 사용하여 반복문을 종료 시키기 때문에  이후 console.log는 더 이상 실행되지 않는다.

 

 

 

 

 

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

 

A :

100*200*300*400*500
100200300400500600
100 200 300 400 500

 

arr.join("*")은 arr 배열의 각 원소를 * 문자로 연결하여 하나의 문자열로 만든다.

따라서 text1 변수에는 100*200*300*400*500 문자열이 할당된다.

arr.push("600")은 arr 배열의 끝에 600이라는 새로운 원소를 추가한다.

arr.join("")은 arr 배열의 각 원소를 연결하여 하나의 문자열로 만든다.

이때, 구분자를 지정하지 않았기 때문에 원소들이 그대로 이어진 문자열이 만들어진다.

따라서 text3 변수에는 100200300400500600 문자열이 할당됩니다.

arr.pop()은 arr 배열의 마지막 원소를 제거한다. 즉, 600이 제거된다.
arr.join(" ")은 arr 배열의 각 원소를 공백 문자로 연결하여 하나의 문자열로 만든다. 

따라서 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

 

 a 변수는 초기화되지 않았기 때문에 undefined 값이 할당되고, b 변수는 10으로 초기화 된다..

for문에서는 i 변수를 0부터 4까지 1씩 증가시키면서, a 변수에 i 값을 할당하고, b 변수에서 a 값을 빼준다.

즉, b 변수는 10에서 0, 1, 3, 6, 10을 차례로 빼면서 0이 된다,
따라서 console.log(a, b)를 실행하면 마지막 반복에서 a 변수에는 4가, b 변수에는 0이 할당되어 출력된다.

 

 

 

 

 

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

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

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

 

:  0.5     19.5     10.5 

 

i /= j; 

: i 변수의 값을 j 변수의 값으로 나눈 결과를 i 변수에 할당한다. 

이 때, /= 연산자는 i = i / j;와 같다.

따라서 i 변수의 값은 0.5가 된다.

j -= i; 

: j 변수의 값을 i 변수의 값으로 뺀 결과를 j 변수에 할당한다.

이 때, -= 연산자는 j = j - i;와 같다.

따라서 j 변수의 값은 19.5가 된다.

k %= j; 

: k 변수의 값을 j 변수의 값으로 나눈 나머지를 k 변수에 할당한다.

이 때, %= 연산자는 k = k % j;와 같습니다. 따라서 k 변수의 값은 10.5가 된다.

 

 

 

 

 

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

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

 

A

:  2번    3번     4번      5번

 

 let 키워드로 선언된 변수 k와 temp는 각각 2와 undefined로 초기화 된다.
for문에서는 i 변수를 0부터 3까지 1씩 증가시키면서, temp 변수에 k 값을 할당하고, k 값을 1 증가시킨 후 temp + "번"을 출력한다.
따라서 console.log 구문은 3번 실행되며, 각각 "2번", "3번", "4번", "5번"을 출력한다.

 

 

 

 

 

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

let num = 10;
    num += 2;
    num -= 3;
    num *= 5;
    num /= 5;
    num %= 9;
    
    console.log(num)

 

: 0

 

let 키워드로 선언된 변수 num은 10으로 초기화 된다.

다음으로 num += 2;를  수행하면 num 변수의 값은 12가 된다.

num -= 3;를 수행하면 num 변수의 값은 9가 되며,
num *= 5;를 수행하면 num 변수의 값은 45가 된다.
num /= 5;를 수행하면 num 변수의 값은 9가 되며,
num %= 9;를 수행하면 num 변수의 값은 0이 된다.

이 때, %= 연산자는 num = num % 9;와 같다.
따라서 console.log 구문은 0을 출력합니다.

 

 

 

 

 

 

 

 

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

 

A

:   1     1       7

 

배열 num은 [1, 5, 1, 2, 7, 5]로 초기화 된다.
for문에서는 i 변수를 0부터 5까지 1씩 증가시키면서, (i+2) % 2 == 0 조건을 검사한다.

여기서 (i+2) % 2의 값은 항상 0이므로, if 구문 내의 코드는 항상 실행된다.

따라서 console.log 구문은 6번 실행되며, num 배열에서 0번 인덱스, 2번 인덱스, 4번 인덱스의 값인 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

 

배열 num은 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]로 초기화된다.

for문에서는 i 변수를 0부터 9까지 1씩 증가시키면서, switch문을 실행한다.

switch문에서는 num[i] % 2의 값에 따라서 case문이 실행한다.
num[i] % 2가 1인 경우: case 1문이 실행되며, 이 경우 console.log(num[i])이 실행되어 배열 num에서 홀수를 출력한다.

num[i] % 2가 0인 경우: default문이 실행되어  이 경우 console.log("**")이 실행되어 **로 출력한다.

 

 

 

 

 

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

 

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

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

 

그러나 console.log에서 sum을 2로 나누므로 홀수의 갯수인 4와 1+3+5+7=16/2인 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

 

주어진 데이터에서 80 이상의 수와 가장 높은 수를 출력하는 코드이다.

반복문을 통해 주어진 데이터를 모두 검사하면서, 80 이상의 수가 몇 개인지 best 변수에 누적한다. 

또한, score 변수에는 현재까지 가장 높은 수를 저장한다.

따라서, 주어진 데이터 [70, 80, 75, 60, 90]에서 80점 이상의 수는 2이고, 가장 높은 수는 90이다.

그러나 best의 초깃값이 1이므로 1+2가 되어 best에서는 3이 score에서는 90이 출력된다.

 

 

 

 

 

 

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

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

    console.log(result)

 

A

:   7 (0111)

 

변수 a는 7(2진수로 111)이고, 변수 b는 4(2진수로 100)이다.

a | b 연산은 각 비트에 대해 OR 연산을 수행한다.

따라서 결과는 111 | 100이 되며, 이는 7과 4를 비트 OR한 결과인 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));

 

A

: YES

 

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

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

a=53, b=93, c=107이므로 total = a+b+c = 253이다.

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

셋 중 가장 큰 값은 c, 즉 107이므로 total-max=146이 된다.

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

따라서 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

 

if(a < b) 구문에서 a와 b 중에서 작은 값을 answer 변수에 할당한다.
다음으로, if(c <= answer) 구문에서 c가 answer보다 작거나 같은 경우 answer 변수에 c를 할당한다.
마지막으로 answer 값을 반환한다.

solution(15, 12, 11)을 호출하면, a=15, b=12, c=11로 전달되므로, answer 변수에는 12가 할당된다.

이후, if(c <= answer) 구문에서는 11이 12보다 작으므로, answer 변수에 11이 할당된다.

따라서, 최종적으로 solution() 함수는 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

 

이 함수는 day 변수로 주어진 수와 일의 자리가 일치하는 arr 배열 내의 요소 수를 반환한다.

위 코드에서는 0과 일의 자리가 0인 수의 개수를 세는 것이다.

함수 내에서는 for-of 반복문을 사용하여 arr 배열의 각 요소 x에 대해 다음을 수행한다.

x를 10으로 나눈 나머지가 day와 같으면, answer를 1 증가시킨다.
반복문이 끝나면, answer 변수에는 일의 자리가 day와 일치하는 arr 배열의 요소 수가 저장되어 있다.

마지막으로 answer 값을 반환한다.



 

 

 

 

 

 

  1. 함수를 인자로 받거나, 함수를 반환하는 함수를 말한다. [본문으로]
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을 반환한다.

 

 

 

 

 

 

 

728x90
반응형

 

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

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

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

 

즉시 실행 함수로, 함수를 이름 없이 정의하고 즉시 실행하기 때문에 함수를 정의하는 즉시 함수 호출을 통해 실행된다.

 

 

 

 

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

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

 

A

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

 

func라는 ㄴ함수를 정의하고, 문자열 매개변수 str을 전달받아 document.write( ) 메서드를 사용하여 화면에 출력한다.

str 매개 변수는 "함수가 실행되었습니다." 라는 기본값을 가지고 있다.

함수가 호출 될 때 인수를 전달하지 않으면, 이 기본값이 str인 매개 변수로 사용된다.

 

func( ); 구문은 func 함수를 호출하는데, 이 경우 인수를 전달하지 않았으므로 str 매개 변수의 기본값인 "함수가 실행되었습니다." 가 출력된다.

 

 

 

 

 

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

let sum = 0;
    for(var i=1; i<=10; i+=2) {
        sum += i;
    };
    document.write(sum);

 

A

: 25

 

변수 sum을 0으로 초기화 하고, 1부터 10까지의 홀수를 더하는 문제이다.

for문에서 i 변수를 1에서 시작하여 2씩 증가 시키면서 sum 변수에 i 값을 더한다.

for문이 실행되는 동안 sum 변수에 누적된 값은 1+3+5+7+9 = 25가 된다.

 

 

 

 

 

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

const obj = {
        a: 100,
        b: 200,
        c: "javascript"
    }
    const { a, b, c } = _______;

    document.write(a);
    document.write(b);
    document.write(c);

A

:obj

 

객체 리터럴을 사용하여 obj 변수를 정의하고 객체 속성 a, b, c에 각각 100, 200, javascript 값을 할당한다.

const {a,b,c} =                 ; 구문에서는 객체 디스트럭처링(Object destucturing) 문법을 사용하여 obj 객체의 속성을 각각 a, b, c 변수에 할당한다.

객체 obj에 값을 할당해야 하기 때문에 빈 칸에는 obj가 들어가야 한다.

 

 

✏ 객체 디스트럭처링 (Object destructuring) 문법

:ES6 (2015)부터 도입된 기능으로, 객체 속성의 값을 추출하여 변수에 할당하는 방법을 제공한다.

필요한 속성만을 선택하여 변수에 할당할 수 있으며, 기본값 설정도 가능하다.

객체에 해당 속성이 없는 경우 기본값이 할당 되는 것이다.

이 기능은 함수의 매개변수에서도 사용할 수 있다.

 

 

 

 

 

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

const objA = {
        a: 100,
        b: 200
    }
    const objB = {
        c: "javascript",
        d: "jquery"
    }
    const spread = {______, ______}

    document.write(spread.a);
    document.write(spread.b);
    document.write(spread.c);
    document.write(spread.d);

 

A

: ...objA, ...objB

 

객체 리터럴을 사용하여 objA, objB 변수를 정의하고, 각각의  객체 속성 a,b,c,d에 각각의 값을 할당하는 문제이다.

const spread = {                                   } 구문에서는 객체 스프레드 문법을 사용하여 objA, objB 객체의 속성을 모두 포함하는 새로운 객체를 생성한다.

따라서 spread 객체는 objA와 objB 객체의 모든 속성을 포함하게 된다.

 

 

 

 

 

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

 if( _____ ){
        document.write("조건문이 실행되었습니다.(true)");
    } else {
        document.write("조건문이 실행되었습니다.(false)");
    }

    //document.write("조건문이 실행되었습니다.(false)");
    //보기
    //true, false, 1, "1", "", 0, null, undefined, [], {}
더보기

작성한 답 : false, 0 , null, undefined 

 

※ 블린, 0, 값이 할당되지 않음(undefined), null은 전부 조건식에 작성했을 때 false가 되는 것들이다.

빈 객체와 빈 배열은 포함되지 않고 빈 "문자열"은 포함된다.

빈 "문자열"도 해당된다는 사실을 잊어버리지 않을 것.

: false,  " "(빈 문자열), 0, null, undefined

 

 0을 제외한 모든 숫자와 문자를 조건식에 넣게 되면 전부 true가 된다.

하물며 빈 배열을 넣어도 결과값은 true가 된다.

또한, 조건식에 불린도 넣을 수 있으며, true를 넣으면 true가, false가 된다.

데이터에 값이 없으면(null, undefined를 작성하면) false가 된다.

 

 

 

 

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

  if( num == 100 ){
        document.write("true");
    } else {
    	document.write("false");
    }

 

A

: (num == 100) ? document.write("true") : document.write("false")

 

삼항연산자의 형식은 (조건식) ? 참인 경우 실행문 : 거짓일 경우 실행문 이다.

조건식의 소괄호는 ( ) 생략할 수 있으며, 조건문과 실행문 사에는 ? (물음표)가 참일 때의 실행문과 거짓일 때의 실행문 사이에는 : (콜론)이 들어간다.

 

 

 

 

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

for(var i=1; i<=1; i++){
        document.write(i);
        for(var j=1; j<=5; j++){
            document.write(j);
        }
    }

 

A

: 1

  1 2 3 4 5

 

외부 for문은 변수 i가 1부터 1까지 반복된다. (i<=1이기 때문)

따라서 내부 for문도 한 번만 반복된다.

내부 for문의 변수 j는 1부터 5까지 반복된다. (j<=5이기 때문)

따라서 내부 for문은 1, 2, 3, 4, 5를 순서대로 출력한다.

 

 

 

 

 

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

  const num = [100, 200, 300, 400, 500];

    for(let i=0; i<num.length; i++){
        document.write(_______);
    }

 

A

: num [i]

 

for문에서 반복문 변수 i는 배열 num의 인덱스 값(자리값/키)을 나타낸다.

따라서 num[i]와 같이 인덱스 값을 사용하여 배열 요소에 접근할 수 있다.

 

 

 

 

 

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

 const num = [100, 200, 300, 400, 500];

    num.forEach(function(el){
        document.write(________);
    });

 

A

:el

 

forEach( ) 메서드는 배열의 요소 값, 키 값, 배열 전체를 받아올 수 있다.

이 문제에서는 배열의 요소 값만 받아오게 된다.

 

그 요소 값을 출력하기 위해서는 빈 칸에 el 즉 (element)가 들어가게 된다.

 

 

 

 

 

11. 다음을 보고 리턴값을 생략하여 한 줄로 표현하시오.

const func = str => {
        return str;
    }

 

 

A

: const func = str => str;

 

return값이 생략되기 때문에 return 구문 없이 바로 str이 된다.

 

 

 

 

 

12. 다음의 결괏값을 보고 빈 칸을 채우시오.

 const num = [100, 200, 300, 400, 500];

    for(let index of _____ ){
        document.write(index);
    }

 

A

: num

 

for of 문은 반복할 수 있는 객체의 모든 요소에 대해 반복문을 수행한다.

배열은 반복 가능한 객체이기 때문에 for of를 사용하여 배열의 모든 요소에 대해 반복문을 수행할 수 있다.

이 문제에서의 반복 변수 index는 배열 num의 요소 값 자체가 된다.

따라서 배열 num을 타깃으로 설정해 주기 위해 num을 작성한다.

 

 

 

 

13. 다음의 결괏값을 보고 빈 칸을 채우시오. 

function func(){
        let i = 5, j = 4, k = 1, l, m;
        l = i > 5 || j != 0;
        m = j <= 4 && k < 1;
        document.write(l);
        document.write(m);
    }
    func();
더보기

작성한 답

: 4

 

※논리 연산식이므로 값이 정수가 아니라 true와 false의 값을 반환한다.

 

A

: true     false

 

이 문제는 논리 연산자를 사용하는 문제이다.

함수 func( ) 안에서 변수 i, j, k, l, m을 선언하고 이들 변수에 값을 할당한다.

그 다음 논리 연산자 || (OR)과 &&(AND)를 사용하여 두 개의 논리식을 평가한다.

 

첫 번째 논리식(l = i > 5 || j != 0;) 에서는 변수 i가 5보다 크거나 (j의 값은 무시) j가 0이 아니어야 한다는 뜻이다.

그러나 i의 값은 5이고, j는 0이 이나므로 이 논리식의 값은 true가 된다.

 

두 번째 논리식(m = j <= 4 && k < 1;)에서는 변수 j가 4보다 작거나 같지 않으며 변수 k의 값이 1보다 작아야 한다는 의미이다.

그러나 변수 j가 4보다 작거나 같지 않으므로 m 변수의 값은  false가 된다.

 

 

 

 

14. 다음의 결괏값을 보고 빈 칸을 채우시오.

 const arr = [100, 200, 300, 400, 500];
    const text = arr.push(600);

    document.write(arr);

    const arr2 = [100, 200, 300, 400, 500];
    const text2 = arr2.unshift(600);

    document.write(arr2);

 

A

: 100, 200, 300, 400, 500, 600

   600, 100, 200, 300, 400, 500

 

문자열 메서드 push( )는 배열의 마지막 요소에 값을 추가하고 unshift는 문자열의 처음에 값을 추가한다.

 

 

 

 

 

15. 다음의 결괏값을 보고 빈 칸을 채우시오.

const obj = {
        a: 100, 
        b: 200
    };

    for(let key in obj) { 
        console.log(key);
    }

 

A

: a, b

 

이 문제는 obj(객체)의 키를 출력하는 구문이다.

여기서 객체의 키는 a, b이므로 출력되는 값은 a, b이다.

 

 

 

 

 

16. 다음의 결괏값을 보고 빈 칸을 채우시오.

let num = 0;

    while(false){
        num++;
        if( num == 3 ){
            continue;
        }
        if( num > 6 ){
            break;
        }
    }
    console.log(num);

 

A

: 0

 

while문을 사용하는 예시이다.

그러나 이 문제에서는 조건식이 항상 false이므로 while 문의 내부 코드는 실행되지 않는다.

즉, num 변수의 값은 0으로 유지된다.

 

 

 

 

17. 다음의 결괏값을 보고 빈 칸을 채우시오.

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

    console.log(result, a, b)

 

A

: 4   7    4

 

비트 AND 연산자(&)를 사용하여 두 개의 숫자를 비트 단위로 AND 연산하는 문제이다.

먼저 a와 b 변수에 각각 7과 4의 값을 할당한다.

그 다음 a & b 연산을 수행하고 결과값을 result 변수에 할당한다.

 

7은 2진수로 나타내면 0111이고, 4는 0100dlek.

비트 AND 연산은 각 비트별로 AND 연산을 수행하므로 다음과 같이 계산된다

   0111 (7)

&0100 (4)

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

   0100 (4)

 

 

 

 

 

18. 다음의 결괏값을 보고 빈 칸을 채우시오.

 let a = 1, b = 2, c = 3, result;
    result = ++a + b++ + ++c;

    console.log(result);
    console.log(a);
    console.log(b+c);
    console.log(c);

 

A

: 8   2   7   4 

 

먼저 a, b, c 변수에 각각 1, 2, 3의 값을 할당한다.

그리고 ++a와 ++c를 실행하여 각각 1씩 증가시킨다.

그러면 a는 2, c는 4가 된다.

b는 후치 연산자로 2의 값을 그대로 가지고 있는 상태이다.

(b++는 후치 연산자이므로 =보다 우선순위가 낮아 연산되지 않는다)

 

++a의 값 2, 와 b (2)그리고 ++c의 값 4를 더한 결과를 result 변수에 할당한다.

즉, result의 값은 8이 된다.

 

cosole.log에서 ++a는 1에서 1을 증가시켜 2가 되고, 

b++는 2에서 1을 증가시켜 3이 되고,

++c는 3에서 1을 증가시켜 4가 된다.

 

 

 

 

 

19. 다음의 결괏값을 보고 빈 칸을 채우시오.

let data = [70, 80, 75, 60, 90];
    let best = 0;
    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)

 

best : 1     score: 90

 

이 문제에서 data 변수는 숫자 데이터를 담은 배열이다.

코드는 이 숫자들 중에 80 이상인 수의 개수와 가장 높은 수를 출력한다.

 

best 변수는 초기값으로 0을 가지고 있다.

이 변수는 for문을 통해 배열을 순회하면서, 80 이상인 수를 세기 위해 사용된다.

만약 배열에서 현재 값이 80 이상이라면 best 변수의 값을 1 증가 시킨다.

 

score 변수는 초기값으로 0을 가지고 있다.

이 변수는 for문을 통해 배열을 순회하면서 가장 높은 수를 찾기 위해 사용된다.

만약 배열에서 현재 수가 score 변수보다 크다면 score 변수의 값을 해당 점수로 대체한다.

 

실행 시 best 변수의 값은 1이 되고  (90만이 80보다 크기 때문) score 변수의 값은 90이 된다. (배열 안에서 가장 큰 수가 90이기 때문)

 

 

 

 

 

20. 다음의 결괏값을 보고 빈 칸을 채우시오.

function func(num1, num2){
        if(num1 > num2) return num1
        else return num2
    }
    console.log(func(10, 23) + func(40, 50))

 

A

: 73

 

이 문제는 두 개의 숫자 중에서 더 큰 값을 반환하여 서로 더하는 문제이다.

 

func 함수는 두 개의 숫자를 인자로 받는다.

만약 첫 번째 인자 num1이 두 번째 인자 num2 보다 크다면 num1을 반환하고, 그렇지 않으면 num2를 반환한다.

 

func(10,23)은 num1(10)이 num2(23)보다 작기 때문에 num2인 23을 반환하고,

func(40, 50)은 num1(40)이 num2(50) 작기 때문에 num2인 50을 반환한다.

 

따라서 func(10,23) + func(40,50)은 23+50 즉, 73이 된다.

 

 

 

 

 

 

 

728x90
반응형

 

 

 

함수 유형 : 객체 안에 함수를 이용한 형태

const info = {
    num1: 1,
    name1: "함수",
    num2: 2,
    name2: "자바스크립트",
    num3: 3,
    name3: "리액트",
    word: "실행",
    result1: function(){
        document.write(info.num1 + ". " + info.name1 + "가 " + info.word + "되었습니다", "<br>");
    },
    result2: function(){
        document.write(info.num2 + ". " + info.name2 + "가 " + info.word + "되었습니다", "<br>");
    },
    result3: function(){
        document.write(info.num3 + ". " + info.name3 + "가 " + info.word + "되었습니다", "<br>");
    },
}
info.result1();
info.result2();
info.result3();
}

더보기

결과

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

 

객체 info를 선언하고 num1~3, name1~3, result1~3 속성을 가지고 있으며 result1, result2, result3 함수는  객체 info의 속성들을 참조하며, 안에 저장된 문자열을 순서대로 호출하여 출력된다.

 

각 함수는 document.write( )메서드를 사용하여 num1, naem1, word, num2,  name2, num3, name3 속성의 값을 조합하여 문자열을 생성하고 출력한다.

 

info 객체 안에는 result1, result2, result3과 같은 함수들이 포함되어 있다.

이 함수들은 객체 내부에 정의된 매서드로 해당 객체를 통해 호출할 수 있다.

 

즉, info.result1( ); , info.result2( ); , result3( );은 info 객체에서 result1,2,3 메서드를 호출하는 것을 의미하며, 해당 메서드가 실행되어 결과를 반환한다.

결과적으로 info.result1( );은 result1 메서드를 호출하고, 해당 메서드가 반환한 결과를 출력한다.

 

 

 

 

객체 생성자 함수

: 자바스크립트에서 객체를 생성하기 위한 함수이다.

생성자 함수는 일반 함수와 차이를 두기 위해 함수명의 첫 문자를 대문자로 표현한다는 특징이 있다.

생성자 함수로 생성된 객체의 속성 추가나, 삭제, 변경은 다른 객체 속성에 영항을 주지 않는다.

 

 

this 키워드를 사용하여 생성될 객체의 프로퍼티 [각주:1]와 메서드를 정의한다.

새로운 객체를 생성할 때마다 객체의 프로퍼티와 메서드를 각각 생성하여 사용할 수 있다.

 

function Func (num, name, word) {
                this.num = num;                 //함수 안의 this는 함수를 통하여 생성되는 객체를 의미한다.
                this.name = name;
                this.word = word;

                this. result = function () {
                    document.write(this.num + ". " + this.name + "가 " + this.word + "되었습니다", "<br>");
                }
            }
            //인스턴스 생성
            const info1 = new Func(1,"함수","실행");             
            const info2 = new Func(2,"자바스크립트","실행");  
            const info3 = new Func(3,"리액트","실행"); 

            info1.result();
            info2.result();
            info3.result();
더보기

결과

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

 

"Func" 라는 생성자 함수를 정의하고, 이를 사용하여 세 개의 인스턴스 info1, info2, info3을 생성한다.

 

Func 생성자 함수는 num, name, word 라는 세 개의 프로퍼티를 가지고 있으며, this 키워드를 이용하여 세 개의 프로퍼티를 현재 생성되는 객체에 할당하고 있다.

이렇게 객체 생성 시 초기값을 핼당할 수 있다.

 

또한, result 메서드를 this 키워드를 이용하여 생성되는 객체에 할당하고 있다.

이 메서드는 인스턴스 객체를 통해 호출된다.

각각의 인스턴스에서 result( ) 메서드를 호출하면, 해당 객체의 num, name, word 프로퍼티를 사용하여 메시지를 출력한다.

 

Func 라는 객체 생성자 함수를 사용하여 생성된 info1, info2, info3까지 3개의 인스턴스는 각각 num, name, word 라는 속성을 가지고 있으며, result라는 메서드를 공유한다.

이렇게 생성된 인스턴스들은 info.result1( ), inforesult2( ), inforesult3( )과 같이 메서드를 호출하여 각자의 정보를 출력할 수 있다.

 

 

 

인스턴스

: 객체 생성자 함수를 사용하여 만든 객체를 말한다.

객체 생성자 함수는 템플릿처럼 사용할 수 있으며, 이를 이용해 동일한 속성과 메서드를 가진 여러 개의 객체를 만들 수 있다.

객체 생성자 함수를 통해 인스턴스를 만들면, 그 인스턴스는 해당 객체의 생성자 함수에 속성과 메서드를 상속받아 사용할 수 있다.

 

 

 

템플릿

: 미리 만들어놓은 형태나 양식으로, 내용을 채워서 사용하는 것을 말한다.

일반적으로 HTML, CSS, Javascript 등 웹 개발에서도 많이 사용된다.

 

Javascript에서는 문자열을 리터럴 내에 백틱 ` 을 사용하여 멀티라인 문자열을 만들 수 있으며, 이를 활용하여 HTML 템플릿을 만들어 사용하기도 한다. 이를 템플릿 리터럴 (Template Literal)이라고 한다.

템플릿 리터럴을 사용하면, 동적으로 값이 변하는 문자열을 만들기도 쉽다.

 

 

 

템플릿 리터럴(Template Literal)

에크마스크립트 2015에서 도입된 새로운 문자열 표기법이다.

기존의 문자열 표기법에서는 작은 따옴표(' ')나 큰 따옴표(" ")를 사용하여 문자열을 감싸고, 변수나 표현식을 문자열 안에 삽입하기 위해 연결 연산자인 +를 사용했지만,

템플릿 리터럴에서는 역따옴표(백틱 `)을 사용하며, ${ } (달러와 중괄호)를 이용하여 문자열 내에서 변수나 표현식을 쉽게 사용할 수 있다.

 

ex) 

기존 문자열 표기법

for(let i=2; i<=9; i++){
    document.write(i + "단","<br>");

    for(let j=1; j<=9; j++){
        document.write(i + "X" + j + "=" + i*j);
        document.write("<br>");

 

 

템플릿 리터럴

for(let i=2; i<=9; i++){
	document.write(`${i}단<br>`);
    for(let j=1; j<=9; j++){
    document.write(`${i}X${j}=${i*j}`);    
}

 

 

 

 

프로토타입 함수

: 자바스크립트에서 객체가 생성될 때, 해당 객체가 상속받는 속성들을 포함하고 있는 객체이다.

이 프로토타입 객체는 해당 객체의 생성자 함수의 prototype 속성에 저장되어 있다.

 

프로토타입 함수를 생성하여 생성자 함수의 prototype 속성에 할당하면, 해당 생성자 함수로부터 생성된 모든 객체가 프로토타입 함수를 상속받을 수 있다.

이를 통해, 각 객체마다 동일한 기능을 구현하는 것이 아니라 프로토타입 객체에 구현하여 모든 객체가 공유할 수 있도록 할 수 있다.

 

프로토타입 함수를 이용하면, 객체의 메서드를 동적으로 추가하거나, 수정하도록 할 수도 있다.

이러한 유연성과 재사용성이 강점 중 하나가 된다.

 

 

 function Func(num, name, word) {
                this.num = num;
                this.name = name;
                this.word = word;
            }

            Func.prototype.result = function (){
                document.write(this.num + ". " + this.name + "가 " + this.word + "되었습니다", "<br>");
            }

            const info1 = new Func(1,"함수","실행");
            const info2 = new Func(2,"자바스크립트","실행");
            const info3 = new Func(3,"리액트","실행");

            info1.result();
            info2.result();
            info3.result();
더보기

결과

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

 

 

생성자 함수 Func를 정의하고 Func의 프로토타입에 result 함수를 추가한 후, Func 생성자 함수로 세 개의 객체 (info1, info2, info3)를 만들어 result 함수를 호출하는 코드이다.

 

객체가 만들어질 때 num, name, word 프로퍼티는 Func 생성자 함수에서 this를 이용하여 각 객체에 할당된다.

 

그리고 Func.prototype.result에 result 함수를 추가함으로써, Func 생성자 함수로 만들어진 객체들이 result 함수를 공유할 수 있다.

 

세 개의 객체 info1, info2, info3의 result 함수를 호출하면, this가 info1, info2, info3 객체를 가리키게 되며, result 함수에서 해당 객체의 num, name, word 프로퍼티를 이용하여 문장을 출력하게 된다.

 

 

 

 

 

 

  1. 객체에서 값을 저장하거나 메서드를 포함하는 "이름 - 값" 쌍을 말한다.  객체의 프로퍼티는 "키 : 값" 형태로 구성되며, 쉽게 말해 객체의 속성이나 특정을 정의하는 것이다. [본문으로]
728x90
반응형

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

{
    if( null ){
        console.log("true");
    } else {
        console.log("false");
    }
}

 

A

: false


0 , false(블린) ,  " " (빈 문자열), undefined, null(값이 없는 것)을 조건식에 넣을 시, 값은 false (거짓)이 됨.
 
 
 
 
 

 

02. 결괏값을 작성하시오. ✔

{
    let num = 0;
    while( num <= 5 ){
        num++;
        console.log(num);  
    }
}

 

더보기

제출한 답 : 1 2 3 4 5

 

※증감식의 위치와 출력문의 위치를 잘 확인할 것.

출력문이 증감식 밑에 있으면 이미 1 증가한 뒤 출력되기 때문에 조건으로 준 숫자보다 1 큰 수까지 출력됨.

 

A

: 1 2 3 4 5 6

 


num 변수가 0으로 초기화되고, num이 5 이하일 동안 while문이  실행된다.

조건이 맞으므로, num을 1 증가시키고 console.log를 통해 출력 시킨다.

console.log가 증감식보다 밑에 있어 이미 1이 증가된 후 출력 되기 때문에 5까지 출력 되지 않고 6까지 출력된다.

 

 

 

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

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

    str.forEach(function(i){
        console.log(i);
    });
}
더보기

제출한 답 : 0 1 2 3 4

 

※forEach문은 함수를 사용한다는 점과 키와 값을 출력 할 수 있다는 점을 기억할 것.

 

A

: 100 200 300 400 500


str은 배열이며, forEach 메서드는 배열의 각 요소에 대해 주어진 콜백 함수를 실행한다.

이 경우, 콜백 함수는 배열의 각 요소를 매개변수 i로 받아 console.log를 실행한다.

forEach 메서드는 str 배열의 각 요소를 하나씩 순회하면서 각 요소를 하나씩 출력한다.배열 str의 요소는 [100, 200, 300, 400, 500] 이며, forEach 메서드는 이 요소들을 순서대로 처리하여 console.log로 출력한다.

 

 

 

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

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

    for(let i of str){
        console.log(i);
    }
}

 

A

: 100 200 300 400 500


문자열이나 배열과 같은 반복 가능한 자료에서 사용하는 반복문으로, (변수 of 배열 이름)의 형식이다.

출력해야 할 타겟, 대상을 정하여 변수로 선언해주어야 하며 출력문에는 변수 이름을 넣어주어야 함.

 

 

 

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

{
    const obj = {
        a: 100, 
        b: 200
    };

    for(let key in obj) { 
        console.log(key);
        console.log(obj[key]);
    }
}
더보기

작성한 답: 0 1 a : 100, b: 200

 

A

: a 100 b 200


key는 for in 반복문에서 현재 객체의 속성 이름을 나타내는 변수이다.

따라서 obj 객체 속성명인 a와 b가 순서대로 'key'에 할당된 후 출력된다.

 

obj[key]는 key 변수에 해당하는 속성 값에 접근하기 위한 방법으로, a와 b의 속성 값을 출력하기 위해 obj[key]를 사용한다.

첫 번째 반복에서 key는 a이므로, obj[key]는 obj.a와 같은 의미가 되기 때문에 100을 출력한다.

두 번째 반복에서의 key는 b이므로 obj[key]는 obj.b와 같은 의미가 되기 때문에 200을 출력한다.

 

 

 

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

{
    let num = 0;

    while( true ){
        num++;
        if( num == 3 ){
            continue;
        }
        if( num > 6 ){
            break;
        }
        console.log(num);
    }
}
더보기

작성한 답: 1 2 4 5 6

 

※조건식 위치에 0이 들어간 것이 아니므로 true가 맞음.

또한 이미 num이 한 번 증가되어 출력되기 때문에 1부터 시작하고 break문의 조건이 num 변수가 6보다 큰 수면 더이상 출력하지 않고 반복문을 끊어버리므로 결과값이 6으로 끝나게 됨.

 

A

: 1 2 4 5 6


num 변수는 0으로 초기화 되고 반복문이 실행될 때마다 1씩 증가한다.

num의 값이 3일 때는 cotinue 문을 만나 결과값이 출력되지 않고 건너 뛰어진다. 그러므로 3은 결과값으로 출력되지 않는다.

num이 6보다 커지면 break문으로 인해 반복문이 종료되므로 6 이후의 숫자는 출력되지 않는다.

 

 

 

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

{
    for(let i=1; i<=5; i++){
        console.log(i);

        if(i == 3){
            break;
        }
    }
}

 

더보기

작성한 답: 1 2 3 4 5

 

 

A

: 1 2 3


처음에 i는 1로 초기화 되고, 반복문이 실행될 때마다 1씩 증가하며, console.log를 통해 i 값을 출력한다.

증가식으로 인해 1씩 증가되던 i값이 3이 되면 if 의 조건문은 참이 되어 break문으로 인해 반복문이 종료된다.

따라서 3 이후의 숫자(값)은 출력되지 않는다.

 

 

 

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

{
    let num = 0;

    while (num < 20){
        num++;
        console.log(num);

        if(num == 1){
            break;
        }
    }
}
더보기
작성한 답 : 1 2 3 4 5 ····· 20

 

A

: 1 2 3


처음에는 i는 1로 초기화 되고, 반복문이 실행될 때마다 1씩 증가하며, console.log를 통해 i 값을 출력한다.

증가식으로 인해 1 증가된 i가 if 문의 조건을 만족했으므로 break문을 만나 반복문이 종결된다.

 

 

 

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

{
    let num = 100;

    switch(num){
        case 100 : 
            console.log("100");
            break;
        case 200 : 
            console.log("200");
            break;
        default :
            console.log("300");
    }
}

 

A

: 100


case와 값을 하나씩 비교하여 일치하는 case를 실행(출력) 시킴.

if와 다르게 조건을 만족한 후에도 식이 종료되지 않으므로 break를 사용하여 끊어주어야 함.

break를 사용하지 않아도 결괏값은 출력이 되지만 값이 true인 이상 반복문은 무한하게 반복되므로 끊어주는 것이 좋음.

default는 case와 일치하는 값이 없을 때 출력됨.

 

 

 

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

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

    console.log(func());
}

 

A

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


리턴값 함수의 화살표 형태로, func 함수는 const str에 함수가 실행되었습니다. 라는 문자열을 선언하고 반환한다.

console.log(func())는 func 함수를 호출하고 그 결과값인 함수가 선언되었습니다. 라는 문자열을 출력한다.

 

 

 

 

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

{
    let direct = 1;

    function gallery(num){
        if(num){
            if(num == 2) direct++;
        } else {
            if(num == 1) direct--;
        }
    }
    gallery(2);

    console.log(direct);
}

 

A

: 2


gallery 함수는 num이 2일 경우에 direct 변수를 1 증가시킨다.

gallery 함수가 호될 때 2가 매개변수 num으로 전달되므로 함수 내부에서는 direct 변수가 1 증가된다.

 

direct 변수의 초깃값은 1이므로 함수 호출 전에는 direct 1이었으나,

gallery(2) 함수 호출 후에 direct 변수가 1 증가하므로 출력값은 2가 된다.

 

 

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

{
    let sum = 0;
    for(var i=1; i<=100; i++) {
        sum += i;
    };
    console.log(sum);
}

 

A

: 5050


let sum = 0; 은  변수 sum을 선언하고 0으로 초기화 한다.

for문을 사용하여 i를 1부터 100까지 1씩 증가시키면서 반복을 실행한다.

각 반복마다 sum 변수에 i 값을 누적하여 1부터 100까지 모든 정수를 더한 값을 sum에 저장한다.

 

 

 

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

{
    const obj = {
        a: 100,
        b: 200,
        c: "javascript"
    }
    const { a:_____, b:_____, c:_____ } = obj;

    document.write(name1);
    document.write(name2);
    document.write(name3);

    //100
    //200
    //javascript
}

 

A

: name1, name2, name3


객체 obj를 정의하고 객체의 속성들을 해체하여 각각 name1, name2, name3 변수에 할당하고 이 변수들을 document.write 함수를 사용하여 출력한다.

객체의 속성들을 해체하여 변수에 할당할 때는 객체 속성 이름과 변수 이름을 콜론(:)으로 구분하여 작성한다.

 

 

 

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

{
    const obj = {
        a: 100,
        b: 200,
        c: "javascript"
    }
    const { a, b, c } = _______;

    document.write(a);
    document.write(b);
    document.write(c);

    //100
    //200
    //javascript
}

 

A

: obj


객체 obj를 정의하고 객체의 속성들을 해체하여 각각 a, b, c 변수에 할당하고 이 변수들을 document 함수를 사용하여 출력한다.

객체의 속성들을 해체하여 변수에 할당할  때,  객체의 속성 이름과 변수 이름이 동일한 경우에는 {속성1, 속성2, 속성3 ... } = 객체; 와 같이 간단하게 작성할 수 있다.

 

 

 

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

{
    const objA = {
        a: 100,
        b: 200
    }
    const objB = {
        c: "javascript",
        d: "jquery"
    }
    const spread = {...objA, ...objB}

    document.write(spread.a);
    document.write(spread.b);
    document.write(spread.c);
    document.write(spread.d);
}

 

A

: 100 200 javascript jquery


두 개의 객체 obj.A와 obj.B를 정의하고 spread 연산자를 사용하여 두 객체를 병합한 spread 객체를 생성한다.

spread 연산자를 사용하여 객체를 병합할 때, 두 객체의 속성 이름이 중복되는 경우에는 마지막에 병합된 객체의 속성 값이 사용된다.따라서 obj.B 객체의 c속성과 d 속성이 spread 객체에 포함되어 있다.

 

 

 

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

{
    const char = ["J","A","V","A","S","C","R","I","P","T"];

    for(let i=9; i>=0; i--){
        console.log(char[i]);
    }
}

 

A

: T P I R C S A V A J

 


변수 i를 9부터 0까지 1씩 감소 시키면서 배열의 키(자리값)으로 사용한다.

따라서 char[9] 부터 char[0]까지 차례대로 출력된다.i가 증가하는 게 아니라 감소하는 반복문이므로 역순으로 출력된다.

 

 

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

{
    let a = 1, b = 2, c = 3, result;
    result = ++a + b++ + ++c;

    console.log(result);
    console.log(a);
    console.log(b);
    console.log(c);
}

 

A

: 8  2   3    4  


첫번째 연산에서는 a가 1에서 2로 증가하고 전치 연산자이므로 ++a는 2라는 값을 반환한다.

두번째 연산에서는 b가 2에서 3으로 증가하지만, 후치 연산자이므로 b++는 2를 반환한다.

세번째 연산에서는 c가 3에서 4로 증가하고, 전치 연산자이므로 ++c는 4를 반환한다.

 

그래서 result 변수에는 8이 할당되고, a는 2,  b는 3, c가 된다.

 

 

 

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

{
    let i = 1;

    while(i > 5){
        console.log(i);
        i++;
    }
    console.log(i);
}

 

A

: 1


while 반복문에서 i가 5보다 클 때까지 반복하는 조건이지만,

조건식이 i>5 (i의 값이 5보다 커야한다)이기 때문에 i는 1로 초기화 된 후 아무런 변화가 없다.

따라서 1이 출력된다.

 

 

 

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

{
    let num = [32, 93, 15, 86, 50];
    let sum = 0;

    for(let i=0; i > num.length; i++){
        sum = sum * i;
    }

    console.log(sum)
}

 

A

: 0


i가 num.length보다 클 때까지 반복하도록 작성되어 있지만, i의 초깃값이 0으로 설정되어 있기 때문에 반복문이 실행되지 않는다.

따라서 console.log에도 0이 출력된다.

 

 

 

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

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

    console.log(result)
}

 

A

: 4 (0100)


비트연산자인 &를 사용하여 7과 4를 비트 단위로 AND 연산한다.

 

7과 4는 2진수로 나타내면 각각 0111과 0100이다.이때 & 연산자는 각 비트의 값이 모두 1일 경우에만 1을 반환한다.

 

 

0111----------          = 0(두 비트모두 0이기 때문), 1 (두 비트 모두 1이기 때문), 00(두 비트가 0과 1로 다르기 때문)0100

 

이기 때문에 0111 & 0100의 결과는 0100이 된다.우측 맨 끝자리부터 2의 0승 (1), 2의 1승 (2), 2의 2승(4), 2의 3승(8) ····· 2의 8승(256)순이며,자릿값이 1인 곳을 확인하면 2의 2승 자리이기 때문에 0100을 10진수로 변환하면 4가 된다.

 

 

 

 

 

728x90
반응형

 

for in

{ const arr = [100, 200, 300, 400, 500]
    for (let i in arr) {                            //1
        document.write(i); or document.write(arr[i]);
    }
}

for of 문과 다르게 객체의 키(자리값만 가져올 수 있다.)

document 이후에 i만 작성하면 키만 출력되나, arr[i]를 작성 시 키의 값이 출력된다.

for of 문으로는 키값만 출력할 수 있지만 for in은 document.write 이후에 어떻게 작성하느냐에 따라 자리값과 키값 모두를 출력할 수 있다.

 

1. arr 배열의 키를 출력한다는 구문이다.

 

 

 

 

swich

{
const num = 100;

switch(num) {
    case 90:
        document.write("실행90");
        break;
    case 80:
        document.write("실행80");
        break;
    case 70:
        document.write("실행70");
        break;
    case 60:
        document.write("실행60");
        break;
    case 50:
        document.write("실행50");
        break;
    default:
        document.write("0");
}
}

다중 if문과 같은 형식이다.

조건식 대신 변수 이름을 넣어준다.

swich문은 case와 값을 하나씩 비교하여 일치하는 case를 실행(출력) 시킨다.

if와 다르게 조건을 만족한 후에도 식이 종료되지 않으므로 꼭 break를 사용하여 끊어주어야 한다.

default는 어느 case와도 일치하는 값이 없을 때 출력된다.

default 에는 break문을 작성하지 않는다.

 

 

 

 

중첩 for문으로 구구단 만들기

for(let i=2; i<=9; i++){							//1
    document.write(i + "단","<br>");					//2

    for(let j=1; j<=9; j++){
        document.write(i + "X" + j + "=" + i*j);    //i(곱해지는 수) * j (곱하는 수)
        document.write("<br>");               		//3
    }

    document.write("<br><br>");         			//4
}

1. 구구단의 2단부터 9단까지 반복하는 for문.

2. "n단"을 출력한 뒤에 줄이 바뀜. ","로 n단과 줄바꿈 태그를 구분한다.

3. 곱해지는 1부터 9가 출력되는 for문이다. 곱해지는 수 i와 곱하는 수 j가 반복되며 출력된다.

"+"로 연결 연산되어 출력되며, 등호 옆에는 i와 j가 곱해진 값이 출력된다.

곱해진 값이 출력된 뒤에 줄바꿈 태그가 출력된다.

4. 두 for문이 전부 출력된 뒤에 줄 바꿈이 두 번 되는 태그이다.

 

 

 

 

수를 입력 받아 양수인지 음수인지 아니면 0인지 구분하기

const number = parseInt(prompt("숫자를 입력하세요"));

function a(n) {										//1
            if (n > 0) {										//2
                document.write(`${n}은 양수입니다.`);
            } else if (n < 0) {									//3
                document.write(`${n}은 음수입니다.`);
            } else {											//4
                document.write(`${n}은 0입니다.`);
            }
        }
                
                if(!isNaN(number)) {  									//5
                a(number);  											//6
                }

 

1. parselnt ( )를 변수로 저장하는 구문.

parseInt 함수는 문자열에서 숫자를 추출할 때 사용한다.

입력 받은 문자열을 실제 숫자값으로 바꾸어서 반환하는 함수이다.

 

2. 입력받은 수 n이 0보다 클 때 (양수일 때)를 구분하기 위해 n > 0이라는 조건을 준다.

 

3. 입력 받은 수 n이 0보다 작을 때 (음수일 때)를 구분하기 위해 n < 0 이라는 조건을 준다.

4. 입력 받은 수 n이 0보다 크지도 않고 작지도 않다면 0 밖에 남지 않는다. 

5. if 문을 하나 더 작성하여 입력 받은 것이 숫자인지 아닌지를 구분해 주어야 한다.

isNaN은 어떤 값이 NaN인지 판별하는 함수이다.

isNaN 앞에 !가 붙어있으므로 숫자가 아닌 것을 판단하도록 한다.

여기서 NaN은 Not-A-Number(숫자가 아님)을 뜻한다.

6. parseInt 함수 이름인 a를 작성하여 함수가 출력되도록 한다.

 

 

 

 

두 수를 입력 받아 최대 공약수 구하기

function a (n, m) { 		            	 //1
  let max = n > m ? n : m;                  //2
  let a = 0;            	                  //3
  for (let i = 1; i <= max; i++) {          //4
    if (n % i === 0 && m % i === 0) {       //5

      a = i;   // 최대공약수              	//6
    }
  }
  return a;                               	//7
}

document.write(`308과 20의 최대공약수 : ${getGCD(308, 20)}`);
document.write(`45과 38의 최대공약수 : ${getGCD(45, 38)}`);

1. 최대 공약수를 구하기 위해서는 두 수가 필요하므로 여러 개의 함수를 작성할 수 있는 매개변수 함수를 작성해준다.

2. 둘 중에 더 큰 수를 max 값으로 두어야 하기 때문에 삼항 연산자를 사용하여 입력 받은 두 수 n과 m 중에  더 큰 수를 max 값에 저장해준다.

3.  최대 공약수를 출력할 변수를 하나 더 선언해준다.

4. for 문을 사용하여 max 값까지 반복하는 구문을 작성한다.

5. i가 n을 나누어도, m을 나누어도 0이 되어야 하기 때문에 동시에 같은 조건을 만족해야 하므로 &&(and 연산자)를 작성해준다.

6. n과 m 둘 모두를 나누어도 0이 되는 수를 만족한 i 값을 최대 공약수를 구하기 위해 선언한 변수에 넣어준다.

7. 리턴값 함수로 구해진 a의 값을 반환해준다.

 

 

 

 

 

 

728x90
반응형

 

01. map ( )

:콜백함수를 실행한 결과를 가지고 새로운 배열을 만들 때 사용한다.

모든 배열의 값에 함수를 실행하는 메서드 (Method)이다.

만약에 배열 안의 모든 값에 숫자를 추가하고 싶다면 map( )을 사용하여 추가할 수 있다.

forEach와 같은 구문이다.

 

 { const num = [100, 200, 300, 400, 500]
    num.map(function(el, i, a){
        document.write(el,"<br>")
        document.write(i,"<br>")
        document.write(a,"<br>")
        
    });
    const mapNum  = el;
    
    document.write(mapNum,"<br>")
}
더보기

100(el)

0 (i)

100,200,300,400,500 (a)

200 (el)

1 (i)

100,200,300,400,500 (a)

300 (el)

2 (i)

100,200,300,400,500 (a)

400 (el)

3 (i)

100,200,300,400,500 (a)

500 (el)

4 (i)

100,200,300,400,500 (a)

 

 

 

 

02. 익명 함수

: 함수에 변수 데이터를 저장하여 변수를 마치 함수처럼 사용할 수 있도록 한다.

{
const func = function( ) {								//1
    document.write("실행되었습니다(2)");				//2
    }
 func( );												//3
}

 

1. const로 변수를 선언하고 변수 이름을 func로 설정해야 하며, 등호를 작성한다.

등호 뒤에는 function이 먼저 오지 않고 func = 뒤에 와야 한다.

 

2. 선언적 함수처럼 document.write( ) 안에 출력될 값을 작성해준다.

 

3. 익명 함수의 호출은 변수 선언 이후에 호출 해야한다.

 

 

 

03. 리턴 값 함수 (return 값 함수)

{
function func( ) {									//1
    const str = "함수가 실행되었습니다";				//2
    return str;										//3
    }
document.write(func( ));							//4
}

 

1. 선언적 함수처럼 fuction 뒤에 func(함수 이름)이 온다.

 

2. 익명 함수와 매개변수 함수처럼 변수를 선언하고 변수 이름을 str로 선언한 뒤, 변수 안에 화면에 출력될 값을 넣어준다.

 

3. return을 선언하고 변수 이름을 작성한다.

 

4. 출력문 뒤에 실행문을 적어주지 않고 출력문 "안에" 실행문을 작성한다.

 

 

 

04. while 문

:반복문의 일종으로 for문과 유사한 형태를 가지고 있다.

{
let num = 0;						//1

while(num<5) {						//2
    num++;                          //3
    document.write(num);     
}
}

:while문은 조건부터 체크한 후 조건이 참인 동안 문장을 반복하는 반복문이다.

조건이 거짓이라면 단 한 번도 실행되지 않을 수도 있다.

 

 

1. for문처럼 변수를 먼저 선언한다.

 

2. while문의 ( )소괄호 안에 조건식을 작성한다. num<5라는 것은 5보다 작은 수까지 출력하겠다는 것.

즉, 4까지 출력하는 조건식이다.

 

3. 반드시 출력문 (document.write) "이후"에 증가식을 작성하여야 함.

출력문 이전에 증가식을 작성하면 값이 증가된 상태에서 출력되기 때문에 원하는대로 출력되지 않을 가능성이 있다.

 

 

 

05. for of 문

:반복 가능 자료에서 사용되는 반복문이다.

문자열이나 배열과 같은 반복 가능한 자료에서만 사용할 수 있다.

 

 {
    const arr = [100, 200, 300, 400, 500];
            
    for(let i of arr) {                                 //타겟, 대상을 정해준 다음 그 값을 i라고 선언하는 것.
        document.write(i,",");
    }
}

 

: 출력해야 할 타겟(대상)을 정하여 변수로 선언해주어야 하며, 출력문에는 배열 이름이 아닌 선언한 변수 이름을 넣어주어야 한다.

배열 안의 값만 출력할 수 있다.

 

 

 

 

 

728x90
반응형

문제 01. 다음의 출력값을 보고 빈 칸을 채우시오.

{
    var x = 100; 
    var y = 200; 
    var z = "javascript"; 

    console.log(__);
    console.log(__);
    console.log(__);

    //100
    //200
    //300
}
더보기

작성한 답

: x / y / z

 

※ 문제 끝까지 잘 읽기.

z에 저장된 것은 "javascript"이므로 답은 z가 아니라  x + y 이다.

 

A : 

▶ x

▶ y

▶ x + y

 

 

 

문제 04. 다음의 출력값을 보고 빈 칸을 채우시오.

{
    const arr = ________();   

    arr[0] = 100;               
    arr[1] = 200;               
    arr[2] = "javascript";     

    console.log(arr[0]);
    console.log(arr[1]);
    console.log(arr[2]);

    //100
    //200
    //javascript
}
더보기

작성한 답

: New Array

 

※배열 선언은 'N'ew Array가 아니라 new 'A'rray이다.

new에 대문자를 작성하지 않고 Array 첫 글자에만 대문자로 작성한다.

 

A :

new Array

 

 

 

문제 08. 다음의 출력값을 보고 빈 칸을 채우시오.

{
    const obj = {____________________};

    console.log(obj.a);
    console.log(obj.b);
    console.log(obj.c);

    //100
    //200
    //javascript
}
더보기

작성한 답

: a = 100, b = 200, c = "javascript"

 

※ 각각 선언하는 것이 아니므로 '='를 작성하지 않고 : 로  작성한다.

또한, 세미콜론(;)으로 끊어주지 않고 , 로 구분하며 중괄호 끝에 세미콜론을(;) 작성한다.

 

 

A :

a:100, b:200, c:300

 

 

 

문제 11. 다음의 출력값을 보고 빈 칸을 채우시오.

{
    const a = 100;
    const b = 200;
    const c = "javascript";

    const obj = { _________ }

    document.write(obj.a);
    document.write(obj.b);
    document.write(obj.c);

    //100
    //200
    //javascript
}
더보기

작성한 답

: a = 100, b = 200, c = "javascript"

 

※ 이미 값이 선언되어 있으므로 또 값을 선언하지 않고 a, b, c만 작성한다.

const (상수)이기 때문에 중복 선언시 오류가 발생한다.

 

A :

a, b, c

 

 

 

문제 12. 다음의 출력값을 보고 빈 칸을 채우시오. 

(틀린 문제는 아니지만 this를 제대로 알고 있지 않았으므로 오답노트 작성)

{
    const obj = {
        a: 100,
        b: [200, ____],
        c: "javascript",
        d: _________(){
            document.write("javascript가 실행되었습니다.");
        },
        e: function(){
            document.write( _______ + "가 실행되었습니다.");    //변수값 사용
        },
        f: function(){
            document.write( _______ + "가 실행되었습니다.");    //this를 사용
        }
    }

    document.write(obj.a);
    document.write(obj.b);
    document.write(obj.b[0]);
    document.write(obj.b[1]);
    document.write(obj.c);
    obj.d();
    obj.e();
    obj.f();

    //100
    //200,300
    //200
    //300
    //javascript
    //javascript가 실행되었습니다.
    //javascript가 실행되었습니다.
    //javascript가 실행되었습니다.
}
더보기

※ this로 값을 불러오기 위해서는 this 뒤에 : 나 ,가 아니라 .(온점)이 와야 한다.

배열이나 객체에 값을 불러올 때 . (온점)을 쓰듯이 this로 값을 불러올 때에는 반드시 . (온점)을 작성한다.

 

A: 

300

function

obj.c

this.c

728x90
반응형

 

 

 

forEach

:배열에서만 사용 가능한 반복문.

요소값, 인덱스값(배열의 자리값), 배열을 불러올 수 있다는 특징이 있다.

화살표 함수로 요약해서 표현도 가능하며, 반복실행문을 작성할 필요 없이 배열 안의 데이터를 전부 불러올 수 있다.

forEach 배열의 요소를 가져와서 함수를 실행해야 할 때, 배열 안에 저장된 데이터가 많을 때 등의 상황에서 사용한다.

 

{ 
const num = [100, 200, 300, 400, 500];
num.forEach(function(element, index, array) {
    document.write(element,"<br>");
    document.write(index,"<br>");
    document.write(array,"<br>");
    }) 
}

 

forEach는 메서드(method)라고 하여 자주 사용하는 부분들을 자바스크립트가 만들어 놓는 것으로, 함수와 같은 개념으로 생각하는 것이 좋다.

 

 

 

for of

:문자열이나 배열과 같은 반복 가능한 자료에서 사용하는 반복문으로, arr 안에 배열 값이 있는 동안 계속 반복된다.

(변수 of  배열 이름)의 형식을 가지고 있고, 출력해야 할 타겟을 정해 i라고 선언해주어야 한다.

배열 안의 값을 불러올 수 있다.

 

const arr = [100, 200, 300, 400, 500];
            
    for(let i of arr) {                       
        document.write(i,",");
    }

 

 

 

for in

:배열 안의 값을 가져오는 for of와 다르게 for in은 객체의 키만 가져올 수 있으므로 해당 키의 값에 접근하려면 arr[i]처럼 대괄호를 사용해야 한다.

for of처럼 출력문 안에 i만 작성 시에는 배열 안의 값이 출력되지 않고 index 값, 즉 자리값(키)만 출력된다.

객체의 키와 값을 불러오기 위해 만든 반복문이다.

 

const arr = [100, 200, 300, 400, 500]
    for (let i in arr) {                            //index, 즉 자리값이 출력됨.
        document.write(i); or document.write(arr[i]);  		//전자 작성시 키 출력, 후자 작성시 값 출력
    }

 

 

 

map( )

:역시 메서드 함수이다.

map( )은 배열 안의 데이터를 다시 배열로 만드는 것으로 배열 내의 각각의 모든 요소에 대하여 주어진 값을 출력한 결과를 모아 새로운 배열을 반환한다.

forEach문으로 element, index, array를 불러온 것과 같은 값을 출력한다.

 

const num = [100, 200, 300, 400, 500]
    num.map(function(el, i, a){
        document.write(el,"")
        document.write(i,"")
        document.write(a,"")
        
    });
    const mapNum  = el;
    
    document.write(mapNum,"<br>");

+ Recent posts