본문 바로가기
오답 노트

Javascript 오답 노트 03

by 코딩대원 2022. 10. 6.

Javascript 오답노트 03

Javascript 오답노트 정리 세 번째 시간입니다.
2022년 10월 6일 간단하게 10문제 쪽지시험을 봤습니다.


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

{
    function q1(num) {
        let answer = 0;
        while(num) {
            answer += num % 10;
            num = parseInt(num / 10);
        }
        return answer;
    }
    
    console.log(q1(1996));
}

while문에 대한 문제입니다.
1996을 대입해주고 시작합니다. true이니 아래로 갑니다.
1996 % 10 = 6 이 나오고, 1996/10 =199.9가나오므로 parseInt에 의해서 199로 반환됩니다.
다시 위로 올라가서 199 % 10 = 9 , 199 / 10 = 19가 나오고 이 과정을 num 0이 나올때까지 반복합니다.
그럼 리턴값은 6+9+9+1 = 25가 나옵니다.

정답 확인하기
25

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

{
    function q2() {
        const array = [10, 31, 1, 2, 3 ,4, 32];
        return array.sort();
    }
    
    console.log(q2());
}

sort에 대한 문제입니다.
앞의 자리수를 보고 비교해서 정렬 해줍니다. 1 10 2 3 31 32 4 순으로 나옵니다.

정답 확인하기
[1, 10, 2, 3, 31, 32, 4]

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

{
    function q3() {
        const array = [10, 31, 1, 2, 3 ,4, 32];
        return array.filter(x => String(x).length >= 2);
    }
    
    console.log(q3());
}

filter와 String에 대한 문제입니다.
Stirng은 숫자를 문자열로 바꿔주므로 2와 같거나 큰 숫자인 2자리 숫자만 출력됩니다.

정답 확인하기
 [10, 31, 32]

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

{
    function q5() {
        return "abcdefghijklmnop".match(/[d-f]/g);
    }
    
    console.log(q5());
}

match와 정규식에 대한 문제입니다.
/[d-f]/g는 d~f까지 배열로 반환한다는 의미입니다.
배열기호를 잊지맙시다.

정답 확인하기
['d', 'e', 'f']

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

{
    function q9() {
        const obj = {
            a : "가",
            b : "나",
            c : "다",
        };
    
        const { c : one, b : two, a : three } = obj;
        return one + two + three;
    }
    
    console.log(q9());
}

간단한 문제입니다만 낚시를 주의해야합니다.

정답 확인하기
다나가

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

{
    function q10(arr) {
        let flag = false;
        let n = 1;
        while(!flag) {
            n++;
            for(let i = 1; i < arr.length; i++) {
                if((arr[0] * n) % arr[i] === 0) {
                    flag = true;
                }
                else {
                    flag = false;
                    break;
                }
            }
        }
        return arr[0] * n
    }
    
    console.log(q10([2,6,8,14]));
}

while(!false)는 true이니 진행합니다.
n= 2일때 시작해서 for문들어가고 i 123 대입해보면 조건안맞아서 탈락 else로 갑니다
n =3시작 i에 123 대입 시 조건에 안맞아서 탈락 이런식으로 반복합니다.
while문을 탈출하기 위해서는 !가있어서 false가 아닌 true조건문으로 for문을 탈출해야합니다.
그 조건을 만족시키려면 i에 1 2 3을 넣었을때 나머지가 모두 0이 나오는 조건을 충족시키게 해야합니다.
따라서 6 8 14의 최소공배수를 구하면 168이 나옵니다.
2 * n = 168이 나와야 하므로 n은 84가 됩니다.
따라서 2*84의 리턴값은 168이 됩니다.



내일 시험 커트라인 50점.. 얼마나 어렵게 나올지 두렵습니다

'오답 노트' 카테고리의 다른 글

Javascript 오답 노트 04  (1) 2022.10.23
Javascript 오답 노트 02  (4) 2022.10.02
Javascript 오답 노트 01  (3) 2022.10.02

댓글


HTML
CSS

JAVASCRIPT

자세히 보기