Javascript Test01

00. Intro.

parseInt(x) : x의 자료형을 숫자(정수)로 바꿔줌, 숫자가 아니면 NaN 반환
String(x) : x의 자료형을 문자열로 바꿔줌.

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

function q1(num) {
    let answer = 0;
    while(num) {
        answer += num % 10;
        num = parseInt(num / 10);

        // 1996 % 10 == 6 (나머지값)
        // answer += 6 
        // num = 1996 ÷ 10 == 199

        // 199 % 10 == 19
        // answer += 19
        
        // 19 % 10 == 9
        // answer += 9

        // answer == 1+9+9+6
    }
    return answer;
}
 
console.log(q1(1996));      // 1+9+9+6 == 25

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

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

console.log(q2());  // 1,10,2,3,31,32,4
                    // 숫자 맨앞자리 기준으로 순서대로 정렬

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

function q4() {
    const array = [10,20,30,40,50];
    return array.reduce((prev, curr) => prev += curr, 0) / array.length;
    // 150 ÷ 5 == 30
}

console.log(q4());      // 30

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

function q6(a,b,c,d) {
    const array = [...arguments];
    return array.reduceRight((prev, curr) => {  // 4,3,2,1
        return prev += curr;    4+3+2+1==10
    }, 0);
}

console.log(q6(1,2,3,4));       // 10

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

function q8() {
    let answer = 0;
    const array = [1,2,3,4,5];
    for(let i = 3; i < 8; i++) {        // i 3~7
        if(array.includes(i) && 0) {    // array에 3~7이 포함되는 값 && 0
            // &&로 인해 0을 포함하지 않기 때문에 for문은 false로 작동하지 않음
            answer++;                   // answer 값 1씩 추가하지 못함
        }
    }
    return answer;
}

console.log(q8());      // false가 떴기 때문에 정답 == 0

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

function q10(arr) {
    let flag = false;
    let n = 1;
    while(!flag) {  // false가 아니므로 실행
        n++;        // n++
        for(let i = 1; i < arr.length; i++) {       // i 1~3
            if((arr[0] * n) % arr[i] === 0) {       // 2 % arr[1~3] === 0 -> true (arr 배열 안의 값이 모두 짝수라서)
                flag = true;                        
            }
            else {
                flag = false;   
                break;      // 2,6,8,14의 공통적인 배수일때 while문이 멈춤
            }
        }
    }
    return arr[0] * n       // 즉, 2,6,8,14의 최소공배수가 정답 == 168
}

console.log(q10([2,6,8,14]));       // 168