문제

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

답안

def solution(n):
    answer = 0
    for i in range(max(n,6), (n*6)+1):
        if (i%n==0) and (i%6==0):
            answer = i/6
            break
    return answer

이 문제는 최소 공배수를 구하는 문제입니다. 최소 공배수를 구하는 방법은 다음과 같습니다.

  • 두 수의 최소공배수는 두 값중 큰 값과 두 값을 곱한 값 사이에 존재한다.
  • 두 값으로 각자 나눴을 때 나머지가 없다면 최소 공배수가 될 수 있는 조건이 됩니다.

코드를 자세히 설명하겠습니다.

  1. 두 값의 최소 공배수는 둘 중 큰 값보다 작을 수 없습니다. 따라서 최소공배수가 될 수 있는 최소값은 두 값중 큰 값이 됩니다.
  2. 두 값의 최소 공배수 중 가장 큰 값은 두 값의 곱입니다. 예를 들어 7과 6의 최소공배수는 두 값을 곱한 42가 됩니다.
  3. n과 6 중 큰 값부터 n과 6을 곱한 값 사이의 값들을 하나씩 확인하면서 n과 6으로 나눴을 때 나머지가 없다면 그 값이 최소공배수가 될 것입니다.
  4. 모든 값을 살펴보다가 최소 공배수가 나타나면 for 문을 종료시켜야 하므로 break 문을 추가합니다. break 문이 없다면 단순히 두 값을 곱한 값을 return 하게 될 것입니다.

 

'Coding Test' 카테고리의 다른 글

[python] 짝수 홀수 개수  (0) 2023.03.06
[python] 피자 나눠 먹기(3)  (0) 2023.03.03
[python] 최빈값 구하기  (0) 2023.02.24
[python] 중앙값 구하기  (0) 2023.02.24
[python] 분수의 덧셈  (0) 2023.02.22

+ Recent posts