프로그래밍/Python

프로그래머스_python lv0. 피자 나눠 먹기(2)

O'bin 2023. 1. 11. 17:12

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

 

프로그래머스

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

programmers.co.kr

 

 

내 답안 : 

 

1
2
3
4
5
6
import math     # gcd 사용 위해 import
 
def solution(n):
    # n과 6의 최소공배수 = 조건 만족 위해 필요한 최소의 피자 조각 수
    answer = (n * 6// math.gcd(n,6)
    return answer//6    # 피자 조각 수를 구했으므로 6으로 나누어 판 수 구하기
cs

 

math.lcm으로 바로 최소공배수를 구하려고 했는데,

AttributeError: module 'math' has no attribute 'lcm' 에러가 발생했다.

찾아보니 lcm은 파이썬 3.9 이상부터 사용할 수 있기 때문에 그 이전 버전 파이썬에서 발생하는 에러라고 한다.

최소공배수(lcm)을 구하기 위해 두 수의 곱을 최대공약수(gcd)로 나누는 연산을 넣었다.

 

시간을 들여 고민하니 확실히 깔끔한 식이 나온다.

 

 

 

 

개선안 : 

 

1
2
3
4
5
6
def solution(n):
    i=1
    while(1):    # 무한 반복문 
        if (6*i)%n==0:
            return i
        i+=1
cs

 

이 풀이와 같은 반복문을 사용해서 풀어보려다가 안돼서 최소공배수를 이용해서 풀었다.

이 방법도 나중에 활용할 수 있도록 숙지해야겠다.