반응형
문제 링크
문제 설명
Ugly Number는 소인수가 2, 3, 5로 제한되는 양의 정수입니다.
정수 n이 주어지면 n이 Ugly Number면 true를 반환합니다.
입출력 예시
입력 | 출력 |
6 | true |
1 | true |
14 | false |
제한 사항
- -2^31 <= n <= 2^31 - 1
문제 풀이
꽤나 간단한 문제다. 2, 3, 5로 나머지가 안생길때까지 나누고 1이 아닐 경우 false를 리턴하면 된다. 뭔가 더 쉬운 풀이가 있을까 싶었지만, 다른 풀이과정을 찾아보니 그렇지는 않았다.
이 문제는 2000개의 좋아요와 1300개의 싫어요를 받았다. 결코 잘만든 문제라고 보긴 어렵지만, 반복되는 부분을 함수로 변경하고, 리턴을 false, true 대신 판단문으로 만들어 버리는 등 코드 가독성을 높이는 방법을 배우는게 좋다.
소스코드
class Solution:
def isUgly(self, n: int) -> bool:
if n < 1: return False
while n % 2 == 0:
n = n / 2
while n % 3 == 0:
n = n / 3
while n % 5 == 0:
n = n / 5
if n > 1:
return False
return True
반응형
댓글