Lumpy Space Princess - Adventure Time

JAVASCRIPT

3월 31일 자바스크립트 테스트 오답

jongyung 2023. 4. 2. 14:42

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

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90

틀린 문제 위주로 오답 정리를 하겠습니다.

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

let num = 0;

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

답: 0

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

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

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

답: 20 21

전치, 후치 문제입니다.

console.log(result) 값은 1 + a 와 b 그리고 1+ c 의 값을 더해야 하고,

console.log(a+b+c) 에서 a 와 b 그리고 c 모두 1씩 증가한 값을 더해주어야 합니다.

 

전치, 후치 문제는 항상 헷갈립니다.

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

function func(){
    let a = [];

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

답: [ 1 2 3 4 5]

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

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

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

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

답: 73

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

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

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

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

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

답: 1 2 3 4

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

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

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

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 = 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

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

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

답: 2번 3번 4번 5번

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

let num = 10;
num += 2;
num -= 3;
num *= 5;
num /= 5;
num %= 9;

console.log(num)

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

답: 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

문제를 제대로 읽지 않아서 실수를 한 문제입니다.

이전에 푼 문제와 같은 문제를 조금 변형했기 때문에 풀이 방식도 같습니다.

for문 안에 if 조문이 중첩되어 있기 때문에 헷갈리지 않게 잘 풀어야 합니다.

 

배열 data의 값이 i로 정해졌기 때문에 배열 안의 값들을 가지고 문제를 풀어야 합니다.

i의 초기값은 0, 조건식은 배열의 요소만큼이고, 증감식은 1씩 증가입니다.

best 와 score 의 값은 각각 1 과 0으로 주어졌습니다.

 

첫 번째 if 조건문에서는 i 값이 80 보다 크거나 같으면 best 의 값이 1씩 증가합니다.

배열의 값을 적용해보면, i 는 80 과 90 의 두 가지 값들이 나옵니다. 

그렇기 때문에 best 의 값은 1씩 두 번 증가해서 1 + 2 = 3 이 됩니다.

 

두 번째 if 조건문에서는 score 의 값이 배열의 요소 값보다 작으면 score 는 그 값이 됩니다.

이 조건문은 배열 중에서 가장 큰 값을 찾는 조건문입니다.

그렇기 때문에 가장 큰 값인 90이 score 의 값이 됩니다.

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