코딩 테스트 풀이 🛠

[프로그래머스] 피자 나눠 먹기 (2)

엄성준 2023. 1. 4. 15:07

문제 설명

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

 

입출력 예

 

n result
6 1
10 5
4 2

 

나의 풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
function solution(n) {
    
    const pizzaNum = 6 // 한판 조각 수
    let lcm = 1 // 최소 공배수
    while(true){
        if(lcm % pizzaNum === 0 && lcm % n === 0){
            break;
        }
        lcm++
    }
    return parseInt(lcm/pizzaNum)
}
cs

 

문제를 풀며 느낀 점

 

- 매번 최소공배수나 최소 공약수를 구해야 할 때마다 알고리즘을 까먹어서 인터넷에서 검색 후 찾는데 이번에는 꼭 기억하고 싶습니다. 먼저 피자 개수를 상수로 설정하고 최소 공배수를 1로 초기화해줬습니다. 그 후 while문을 통해서 lcm(최소 공배수)을 1씩 증가시키면서 lcm을 피자 개수와, n(먹는 사람의 수)로 나눴을 때 0 &&연산자를 사용해서 두 조건 다 만족하면 break를 통해서 반복문을 멈추고 최소공배수를 피자 한판의 조각 수로 나눈 몫을 return 했습니다.