포시코딩

[프로그래머스][Lv.0] 피자 나눠 먹기 (2) 본문

자료구조알고리즘/문제풀이

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

포시 2023. 1. 3. 11:25
728x90

문제

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

 

프로그래머스

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

programmers.co.kr

 

내 풀이

def solution(n):
    x = 1    
    while True:
        if n*x % 6 == 0:
            return n*x // 6
        x += 1

 

다른 풀이

def solution(n):
    return n // gcd(n, 6)
    
def gcd(a, b):
    while b > 0:
        a, b = b, a%b
    return a

n과 6에 대해 최대공약수와 최소공배수를 이용해 푼다면

  • n과 6의 최소공배수 lcm을 구하면 -> n명의 사람들이 최종적으로 먹을 총 조각 개수
  • lcm / 6 -> 주문하게 될 피자 개수 result
  • lcm      -> n * 6 / gcd
  • result   -> n * 6 / gcd / 6이므로 6를 소거한다면
  •              -> n / gcd

 

728x90