[Programmers]1단계 코테 5개

이묘·2022년 7월 19일
0

CodingTest

목록 보기
13/41
post-thumbnail

프로그래머스 코딩테스트 1단계

  • map함수
  • 최대공약수와 최소공배수




행렬의 덧셈

function solution(arr1, arr2) {
    var answer = [];
    var result = [];

    arr1.map((array1, index) => {
        array1.map((a,idx) => {
            answer.push(a+arr2[index][idx])
        })
        result.push(answer);
        answer = [];
    })

    return result;

  	// 한줄로 이렇게 적을 수도 있다.
    // return arr1.map((array1, index) => array1.map((a,idx) => 
    //     a + arr2[index][idx]
    // ))
}




콜라츠 추측

function solution(num) {
    var answer = 0;

    if (num !== 1) {
        while(true){
            num % 2 === 0 ? num = num/2 : num = (num*3)+1;
            answer += 1;
            if(num === 1) { return answer; break; }
            if(answer === 500){return -1; break; }
        }
    }else{
        return 0;
    }
}




최대공약수와 최소공배수

function solution(n, m) {
    var answer = [];
    var arr_n = [];
    var arr_m = [];
    var max = [];
    var i = 1;

    // 최대공약수
    while (i <= n){
        n % i == 0 ? arr_n.push(i) : 0
        i+=1
    }
    var i = 1;
    while (i <= m){
        m % i == 0 ? arr_m.push(i) : 0
        i+=1
    }
    arr_n.map(a => {
        arr_m.map(b => {
            a === b ? max.push(a) : 0
        })
    })
    answer.push(Math.max(...max));

    // 최소공배수
    answer.push(n*m/Math.max(...max));

    return answer;
}




평균 구하기

function solution(arr) {
    var answer = 0;

    arr.map(a => answer += a)

    return answer/arr.length;
}




하샤드 수

function solution(x) {
    var answer = true;
    var sum = 0;

    arr = x.toString().split('').map(a => a*1)
    
    for ( var i = 0; i < arr.length; i++) {
        sum += arr[i];
    }
    console.log(sum);

    x%sum === 0 ? answer : answer=false;

    return answer;
}
profile
본질을 공부해야 응용도 하지 않을까

0개의 댓글