피자 나눠 먹기(2)

ElenaPark·2022년 12월 8일
0

알고리즘

목록 보기
37/37
post-thumbnail

문제 설명

피자 조각은 6조각일때 주어지는 정수 n명이 피자를 하나도 남기지 않고 모두 같은 수의 피자조각을 먹어야할 경우 최소로 시켜야하는 피자는 몇판인가?

풀이 과정

기본 조각수 (6조각)와 주어진 n으로 모두가 한조각씩 먹으면서도 피자가 남지 않게 하는 최소한의 조각수를 구하면(즉, 최소공배수) 최소 피자 판 수를 구할 수 있다.

  1. 최소공배수는 두 수의 곱을 두 수의 최대공약수로 나눈 값으로 나타낼 수 있다.
  2. 1번의 과정을 위해 유클리드 호제법을 이용하여 최대공약수를 구한다.
// 최대 공약수 구하기
function getGCD(num1,num2) {
    // recursive way
    if(num2 === 0) {
        return num1;
    }
    return getGCD(num2, num1 % num2)
}

function solution(person) {
    const pieces = 6;
    const GCD = getGCD(pieces,person)
    // 최소공배수 구하기
    const LCM = (person*pieces) / GCD;
    
    return LCM / pieces;
}

profile
Front-end 개발자입니다.

0개의 댓글