코딩테스트/Programmers
[Programmers] 입문) 피자 나눠 먹기 (2) (최소공배수)
HONGGG
2023. 6. 28. 05:57
이번 문제를 보며 바로 생각난 것은 최소공배수이다.
주어진 값과 동일한 공배수를 찾아야 몇 판의 피자를 줄 수 있는지 알 수 있기 떄문이다.
using System;
public class Solution {
public int solution(int n) {
return LCM(6, n) / 6;
}
private int LCM(int a,int b)
{
int n = a;
int m = b;
int temp = 0;
while(m > 0)
{
temp = n % m;
n = m;
m = temp;
}
return (a * b) / n;
}
}
최소공배수를 구하기 위해 두개의 매개변수를 받아 최대공약수를 확인한다.
최대공약수를 6으로 나누어 정답을 확인한다.
단, 여기서 두 비교 대상 중 하나가 6으로 고정되어있다는 사실을 간과했다.
이제 다른 분들의 정답 중 가장 좋게 본 코드를 보자.
using System;
public class Solution {
public int solution(int n) {
int temp = n;
while(n % 6 != 0)
n += temp;
return n / 6;
}
}
인원수가 6의 배수가 되기까지 계속 늘리면되는 방법이었다.
정말 깔끔하고 간략하다.