목차
문제 설명
머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
해결 방법
필요한 피자의 수는 n명을 6조각으로 나누었을 때 남김없이 나누어지는 최소 피자의 수를 찾는 것이다.
- 피자는 한 판에 6조각.
- n명이 모두 같은 수의 피자 조각을 먹으려면, n과 6의 최소공배수(LCM)를 구한다다.
- LCM을 6으로 나누어 필요한 피자 판 수를 계산한다.
예시
- 6명의 경우: 6명을 모두 같은 수의 피자 조각으로 나누기 위해 최소 한 판이 필요.
- 9명의 경우: 9명과 6의 최소공배수를 구하면 18이 되고, 이는 3판이 필요.
코드 설명
- gcd 메서드는 두 수의 최대공약수를 계산.
- lcm 메서드는 두 수의 최소공배수를 계산.
- getPizza 메서드는 n과 6의 최소공배수를 구하고, 이를 6으로 나누어 필요한 피자의 수를 반환.
- solution 메서드는 getPizza 메서드를 호출하여 결과를 반환.
abstract class Pizza {
abstract int getPizza(int n);
}
class Solution extends Pizza {
// 최대공약수(GCD) 계산
private int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 최소공배수(LCM) 계산
private int lcm(int a, int b) {
return a * b / gcd(a, b);
}
@Override
public int getPizza(int n) {
// 6과 n의 최소공배수 계산 후 6으로 나눔
return lcm(6, n) / 6;
}
public int solution(int n) {
return getPizza(n);
}
}
728x90
'JAVA > 프로그래머스 코딩테스트 입문' 카테고리의 다른 글
[프로그래머스, 입문] 옷가게 할인 받기 (1) | 2024.06.14 |
---|---|
[프로그래머스, 입문] 피자 나눠 먹기 (3) (0) | 2024.06.14 |
[프로그래머스, 입문] 피자 나눠 먹기(1) (0) | 2024.06.14 |
[프로그래머스, 입문] 배열 두배 만들기 (0) | 2024.06.14 |
[프로그래머스, LV.0] 분수의 덧셈 (0) | 2024.06.12 |