본문 바로가기

알고리즘 문제 풀이/LeetCode

263. Ugly Number

반응형
SMALL

유명한 못 생긴 수입니다.

 

원래 유명한 문제인 못 생긴 수는 이 문제가 아니죠.

 

약간... 빌드업을 위한? 문제라고 생각하시면 될 거 같습니다.

 

즉, 다음 문제는 그 유명한 못 생긴 수이고, 오늘 문제는 이 문제로 갑시다.

 

https://leetcode.com/problems/ugly-number/

 

Ugly Number - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

본 문제는 하나의 수가 주어졌을 때 2, 3, 5의 곱으로만 이루어진 수이냐? 를 물어봅니다.

 

맞으면 True, 틀리면 False를 반환하면 됩니다.

 

예외 케이스로서는 1은 무조건 못 생긴 수이며 0을 포함한 음수는 전부 못 생긴 수가 아니죠.

 


class Solution:
    def isUgly(self, num: int) -> bool:
        if num == 0: return False
        while 1:
            if num % 5 == 0: num = num // 5
            else: break
        while 1:
            if num % 3 == 0: num = num // 3
            else: break
        while 1:
            if num % 2 == 0: num = num // 2
            else: break
        if num == 1: return True
        else: return False

간단합니다 ! 계속해서 반복문 돌면서 맞으면 5로 나누어 떨어지면 5로 나누고, 3으로 나누어 떨어지면 3으로 나누고, 2로 나누어 떨어지면 2로 나누면 됩니다.

 

쉽죠?

 

근데 코드가 지저분 하네요. 수정을 해봅시다.

class Solution:
    def isUgly(self, num: int) -> bool:
        if num <= 0: return False
        while num % 5 == 0 or num % 3 == 0 or num % 2 == 0:
            if num % 5 == 0: 
                num = num // 5
            elif num % 3 == 0: 
                num = num // 3
            elif num % 2 == 0: 
                num = num // 2
        if num == 1: return True
        else: return False

좀 더 깔끔해졌죠??


이상 263. Ugly Number였습니다. ^_^

 

못생긴 것도 서러운데 ㅠㅠㅠ

 

흐어유ㅠㅠ

반응형
LIST

'알고리즘 문제 풀이 > LeetCode' 카테고리의 다른 글

264. Ugly Number II (Heap)  (0) 2020.07.05
26. Remove Duplicates from Sorted Array  (0) 2020.07.05
307. Range Sum Query - Mutable  (0) 2020.07.03
20. Valid Parentheses  (0) 2020.07.01
14. Longest Common Prefix  (2) 2020.07.01