최소공배수를 구하는 공식에서 매우 헤맸다
완전히 수학적으로 접근했음
아직 머리가 코드로 이루어져있지 않나보다
public class PizzaTwo {
public int solution(int n) {
int answer = 0;
int a = gcd(6, n);
int pizza = (n * 6) / a;
answer = pizza / 6;
return answer;
}
public int gcd(int a, int b) {
while(b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
}
접근법은 최소공배수를 구하는 것에 집중했다
최소공배수 = (a * b) / 최대공약수 라는 점을 활용했음
참고할만한 풀이
while의 무한루프를 활용해서 풀어낸 경우
매우 참고할만함
class Solution {
public int solution(int n) {
int answer = 1;
while(true){
if(6*answer%n==0) break;
answer++;
}
return answer;
}
}
while문 내의 if문을 중괄호 포함해서 써본다면
if(6 * answer % n == 0) {
break;
}
answer ++;
이렇게 될것이다. 곱셈이 먼저 행해지고 이후에 나머지 연산자가 계산됨
최대공약수 메서드를 다르게 쓴 케이스
class Solution {
public int solution(int n) {
return n / gcd(6, n);
}
int gcd(int m, int n) {
return m % n == 0 ? n : gcd(n, m % n);
}
}
삼항연산자를 사용했다