Algorithm/Programmers

[JS 코딩테스트] 피자 나눠 먹기(2)

33e 2025. 4. 5. 16:58

문제설명

머쓱이네 피자가게는 피자를 여섯조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때,

n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최고 몇 판을 시켜야 하는 지를

return하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1≤n ≤100

입출력 예

n result
6 1
10 5
4 2

 


나의 풀이

function solution(n) {
    let gcd = 0;
    let lcm = 1;
    let pizza = 1;
    
    if(n !== 6 && 6 % n !== 0){
       for(let i = 0; i < n; i++ ){
            if(n % i === 0 && 6 % i === 0){
                gcd = i
             }
        }; 
        
        lcm =  (n * 6) / gcd;
        pizza = lcm / 6
    }
    
    return pizza;
}

6의 약수 명의 사람이 먹을 경우를 고려를 안 하고 코드를 짜서 틀렸던 문제이다.

단순히 생각하지 말고 많은 경우의 수를 생각해야겠다.

 


다른 사람의 풀이

const solution = (n) => {
    let piece = 6
	
    //조건이 맞을 때까지 무한 루프
    while(true) {
    	//피자 조각이 인원수에 맞게 떨어지면 루프 종료
        if (piece % n === 0) {
            break
        }
        
        //피자 한 판당 6조각
        piece += 6
    }
	
    //조건에 부합하는 조각수를 판당 조각수로 나눠서 판 수를 리턴시킴
    return piece / 6
}

while문을 통해 깔끔하고 가독성 좋은 코드라서 인상깊었다.