본문 바로가기
프로그래밍/Algorithm

[프로그래머스 Programmers] 피자 나눠 먹기(2)

by bantomak 2023. 9. 27.

문제 설명

머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

 

제한 사항

1 ≤ n ≤ 100

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이 코드

using System;

public class Solution {
    public int solution(int n) {
        var r = lcm(n, 6);
        var answer = r / 6;
        
        return answer;
    }
    
    int gcd(int a, int b)
    {
        while(b > 0)
        {
            var c = a % b;
            a = b;
            b = c;
        }

        return a;
    }

    int lcm(int n, int m)
    {
        return (n * m) / gcd(n, m);
    }
}

 

최소공배수를 구해서 피자 6조각으로 나누면 해답을 얻을 수 있는 문제이다.

최소공배수를 구하기 위해서 최대 공약수를 구하고 (GCD) 이를 n * m의 곱으로 나눴다.

 

함께 읽으면 좋은 글

 

약수와 배수

약수(Divisor)와 배수(Multiple)는 어떻게 다른가? 다항식 A가 BC = A로 인수분해 될 때, A를 B,C의 배수라고 하고, B,C를 A의 약수라고 한다. 약수(divisor) : 나누어져 나온 요소 배수(multiple) : 곱해져서 나온

jettstream.tistory.com

댓글