문제
머쓱이네 피자가게는 피자를 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
이 문제는 최소 공배수를 구하는 문제입니다. 최소 공배수를 구하는 방법은 다음과 같습니다.
- 두 수의 최소공배수는 두 값중 큰 값과 두 값을 곱한 값 사이에 존재한다.
- 두 값으로 각자 나눴을 때 나머지가 없다면 최소 공배수가 될 수 있는 조건이 됩니다.
코드를 자세히 설명하겠습니다.
- 두 값의 최소 공배수는 둘 중 큰 값보다 작을 수 없습니다. 따라서 최소공배수가 될 수 있는 최소값은 두 값중 큰 값이 됩니다.
- 두 값의 최소 공배수 중 가장 큰 값은 두 값의 곱입니다. 예를 들어 7과 6의 최소공배수는 두 값을 곱한 42가 됩니다.
- n과 6 중 큰 값부터 n과 6을 곱한 값 사이의 값들을 하나씩 확인하면서 n과 6으로 나눴을 때 나머지가 없다면 그 값이 최소공배수가 될 것입니다.
- 모든 값을 살펴보다가 최소 공배수가 나타나면 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 |