프로그래밍_정보공유/tips
프로그래머스 python 버전(python math 라이브러리 lcm 안되는 문제)
jjscript
2023. 6. 7. 18:06
728x90
반응형
프로그래머스에서 최대공약수, 최소공배수 관련 문제를 풀던 도중에 이런 에러를 맞닥뜨렸습니다.
제가 작성한 코드
from math import gcd, lcm
def solution(n, m):
answer = []
answer.append(gcd(n, m))
answer.append(lcm(n, m))
return answer
발생 에러
Traceback (most recent call last):
File "/solution_test.py", line 6, in <module>
from solution import *
File "/solution.py", line 3, in <module>
from math import gcd, lcm
ImportError: cannot import name 'lcm' from 'math' (/usr/lib/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so)
분명히 python 공식 문서를 보고 math 모듈의 lcm 함수가 있다는 것을 확인했는데, 무슨 이유에서인지 실행이 안 됐습니다. 에러 메시지를 살펴보니 위의 에러에서 python 버전이 3.8로 되어 있는 것을 확인할 수 있습니다.

하지만 python 공식문서를 살펴보니 math.lcm() 함수는 버전 3.9부터 추가되었다고 합니다. 이러한 이유로 프로그래머스에서는 math 모듈의 lcm 함수를 사용할 수 없던 것이었습니다.
하지만 gcd()함수는 버전 3.5부터 사용이 가능했기 때문에 gcd 함수만으로 다음과 같이 문제를 해결할 수 있었습니다.
from math import gcd
def solution(n, m):
answer = []
answer.append(gcd(n, m))
answer.append((n * m) / gcd(n, m))
return answer728x90
반응형