[프로그래머스] 피자 나눠 먹기(2)_Python
1 - 1. 문제 설명
머쓱이네 피자가게 피자를 여섯 조각으로 잘라 줍니다. 피자를 나워먹을 사람의 수 n이 매갸변수로 주어질때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
1 - 2. 제한사항
- 1 ≤ n ≤ 100
1 - 3. 입출력 예 설명
입출력 예 #1
- 6명이 모두 같은 양을 먹기 위해 한 판을 시켜야 피자가 6조각으로 모두 한 조각씩 먹을 수 있습니다.
입출력 예 #2
- 10명이 모두 같은 양을 먹기 위해 최소 5판을 시켜야 피자가 30조각으로 모두 세 조각씩 먹을 수 있습니다.
입출력 예 #3
- 4명이 모두 같은 양을 먹기 위해 최소 2판을 시키면 피자가 12조각으로 모두 세 조각씩 먹을 수 있습니다.
2. 문제해결방법
피자는 한판에 6조각이고 피자을 다 먹어야 하는 문제이다. 여기서 먼저 생각난 건 while문이다. 피자를 answer로 매개변수를 주고 6조각을 곱한 후 n으로 나눠서 소수점이 0 이거나 0 이 아닌지 나타내주는 코드를 짜서 0이면 while문에서 나오는 코드를 생각해봤다.
def solution(n):
answer = 1
while (answer*6) % n !=0:
answer+=1
return answer
answer는 0이면 처음부터 0이 나와서 while문을 나와버리기 때문에 1로 시작을했다.그래서 n을 나눠서 0이 아닌경우는 answer를 하나씩 더해 다시 while문으로 돌아가는 코드이다. 마지막은 만약에 소수점이 0이면 while문은 끝나는 코드로 구현했다.
3. 다른 사람 풀이
import math
def solution(n):
return (n * 6) // math.gcd(n, 6) // 6
간결하게 math 라이브러리를 사용해 최소공배수를 이용해서 푼 사람의 코드이다. gcd는 최대 공약수를 구하는 함수이다. 최대공약수(GCD)란 두 수 이상의 여러 수의 공약수 중 최대인 수를 가리킵니다.
4. 느낀점
피자 나눠 먹기 1 때도 다른사람풀이에 math를 써서 푼 사람의 코드를 올려놓았다. 비슷한 문제여서 math라이브러리를 써서 풀려서 노력을 해봤지만 감이 잘 안와서 while문으로 풀었었다. 그러나 math함수를 써서 푼 사람을 보니 내가 틀리지 않는 과정이였구나라 생각이 들었다. 조금만 더 생각을 하면서 끝까지 math함수로 풀수 있을것같은 문제는 풀어봐야겠다 .