문제 링크 : https://leetcode.com/problems/ugly-number/
소인수가 2,3또는 5로만 이루어졌으면(=Ugly Number) True, 아니면 False를 반환한다.
이전에 소인수분해문제를 풀어봤지만 이번 문제는 어려웠다.
20(Ugly Number)를 예로들면 20을 2로 나누면 10, 10을 2로 나누면 5, 그리고 5는 5로 나누면 1이 된다.
14는 2로 나누먄 7, 그리고 7은 2,3,5 중에 아무것도 나누어지지 않는다.
import math
class Solution:
def isUgly(self, n: int) -> bool:
for i in 2,3,5:
while n%i ==0 < n:
n/=i
return n == 1
코드 자체는 어렵지는 않으나 이를 논리적으로 생각하기까지가 꽤나 어려웠다.....