코딩테스트/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의 배수가 되기까지 계속 늘리면되는 방법이었다.

정말 깔끔하고 간략하다.