
https://school.programmers.co.kr/learn/courses/30/lessons/120815
문제를 어떻게 풀어야 하는지는 파악했지만 최소공배수를 구하는 공식을 몰라서 이 부분만 gemini를 이용해서 정답을 맞췄다.
class Solution {
public int solution(int n) {
// n명이 주문한 피자고, 1판당 6조각으로 잘라준다.
if(n==6) return 1;
int total = getLCM(n, 6);
return total / 6;
}
// 1. 최대공약수(GCD) 구하기 (유클리드 호제법)
public static int getGCD(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
// 2. 최소공배수(LCM) 구하기
public static int getLCM(int a, int b) {
// (a * b) 과정에서 오버플로우가 발생할 수 있으므로
// a / getGCD(a, b) * b 순서로 계산하는 것이 안전합니다.
return (a * b) / getGCD(a, b);
}
}