[Programmers] 피자 나눠 먹기 (2)

그래도 해야지·2023년 4월 16일
0

Programmers

목록 보기
12/40
post-thumbnail

문제 설명
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

🤔 해설

1. Math.max()

Math.max()는 입력값으로 받은 0개 이상의 숫자중 가장 큰 수를 반환합니다.

// 예시 코드
console.log(Math.max(1, 3, 2));	// 3

최소공배수를 구하기위해 n(사람수)과 6 중에서 큰 숫자를 먼저 구해줍니다.

const maxNumber = Math.max(n, 6);

2. 최소공배수를 저장할 변수를 초기화합니다.

최대공약수는 Greatest Common Measure(GCM)
최소공배수는 Least Common Multiple(LCM)

let lcm = maxNumber;

3. while 문 실행하기

while문은 조건이 참일 때 실행되는 반복문
최댓값을 n으로 나눴을 때 0이 아니거나 6으로 나눴을 때 0이 아니라면 true를 반환해서 lcm이 n과 6의 공배수가 아닐 경우 계속해서 lcm을 증가시키게 했다.

while (lcm % n !== 0 || lcm % 6 !== 0) {
        lcm += maxNumber
    }

ex) 예를 들어 const maxNumber = Math.max(30, 6);일 때

let lcm = 30;
while (30 % 30 !== 0 || 30 % 6 !== 0) {
	lcm += maxNumber;
}
	return lcm;

30을 30으로 나눴을 때 0이므로 첫번째 조건은 false
30을 6으로 나눴을 때 0이므로 두번째 조건도 false

만약 n이 10이었다면?
10을 10으로 나눴을 때 0이므로 첫번째 조건은 false
10을 6으로 나눴을 때 0이 아니므로 두번째 조건은 true이기때문에
lcm을 maxNumber씩 증가시키게된다. (n이 10이라면 10을 10씩 증가시키게 되는 것)

✅ 답

function solution(n) {
    const maxNumber = Math.max(n, 6);
    let lcm = maxNumber;
    
    while (lcm % n !== 0 || lcm % 6 !== 0) {
        lcm += maxNumber
    }
    return lcm / 6
}

0개의 댓글