최대공약수 구하는 법

//성진님강의
function max (num1,num2){
   if(num1 % num2 === 0) return num2;
   else return max(num2 , num1 % num2)
}

 

공통된 문제 하나씩 풀어와서 서로 설명해주는 오프라인 스터디

문제

// 석우님의 풀이
function solution(d, budget) {
    const 정렬 = d.sort((a, b) => a - b);
    
    const temp = [];
    
    for (const element of 정렬) {
        temp.push(element);
        if (temp.reduce((acc, crr) => { return acc += crr }) > budget) {
            temp.pop();
            break;
        }
    }
    return temp.length;
}
// 지성님의 풀이
function solution(d, budget) {
    let count = 0;
    d.sort((a,b) => a-b);
    for(let i=0; i<d.length; i++) {
        if(budget >= d[i]) {
            budget -= d[i];
            count ++;
        }
    } return count;
};
// 지해님의 풀이
let sum = 0;
let answer = 0;

function solution(d, budget) {
    d.sort((a, b) => a - b);
    for (i = 0; i < d.length; i++) {
        sum += d[i];
        if (sum <= budget) {
            answer += 1;
        }
    }
    return answer;
}
// 배열을 객체로 빼서 중복값 세기
let arr = ['a','b','c','c','d','b','c']
let obj ={}
arr.forEach(el => obj[el] = (obj[el] || 0) + 1);

 console.log(obj);
// 고차배열을 앞값, 뒷값 기준으로 2번 정렬할 수 있다.
// 문제: https://school.programmers.co.kr/learn/courses/30/lessons/120880
// 최빈값 구하기 문제에서 고차배열로 푼 풀이 참고하기
// 성진님의 풀이
function solution(numlist, n) {
    var answer = [];
    // 1. 배열을 순회하면서 정수 n과의 차의 절대값을 구한다.
    // 2. 차이가 작은 요소부터 정렬을 해준다.
    // 3. 차이가 같을 경우 요소가 큰 수부터 푸쉬를 해준다.
    let obj = {};
    numlist.map(v => obj[v] = Math.abs(v-n) )
    let arr = Object.entries(obj)

    arr.sort((a,b) => parseInt(b[0]) - parseInt(a[0]))   
    arr.sort((a,b) => a[1] - b[1])

    arr.map(v => answer.push(parseInt(v[0])))


    return answer;
}

+ Recent posts