문제설명
머쓱이네 피자가게는 피자를 여섯조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 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문을 통해 깔끔하고 가독성 좋은 코드라서 인상깊었다.