프로그래머스.피자나눠먹기

남궁진 (jinvicky)·2026년 3월 30일

Problem


https://school.programmers.co.kr/learn/courses/30/lessons/120815

Solution


문제를 어떻게 풀어야 하는지는 파악했지만 최소공배수를 구하는 공식을 몰라서 이 부분만 gemini를 이용해서 정답을 맞췄다.

Code


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);
    }
}
profile
문제를 차근차근 하나씩 해결하려고 합니다:)

0개의 댓글