본문 바로가기

LeetCode

[LeetCode] - 263. Ugly Number

LeetCode는 프로그래밍 문제를 풀며 코딩 실력을 향상할 수 있는 온라인 플랫폼입니다. 다양한 알고리즘 및 데이터 구조 문제를 제공하며, 면접 대비에 유용합니다. 해당 문제는, LeetCode Problems에서 볼 수 있는 난이도 '쉬움 (Easy)' 단계인 "Ugly Number" 문제입니다.

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

 

문제 : 

An ugly number is a positive integer whose prime factors are limited to 2, 3, and 5.

Given an integer n, return true if n is an ugly number.


Example 1 :

Input : n = 6

Output : true

Explanation : 6 = 2 × 3

 

Example 2 :

Input : n = 1

Output : true

Explanation : 1 has no prime factors, therefore all of its prime factors are limited to 2, 3, and 5.

 

Example 3 :

Input : n = 14

Output : false

Explanation : 14 is not ugly since it includes the prime factor 7.

 

Constraints : $-2^{31} \leq n \leq 2^{31} - 1$


이 문제는 n이 Ugly Number인지 아닌지 참, 거짓으로 반환해야 하는 문제입니다. Ugly Number란, 소인수가 2, 3, 5로만 구성된 양의 정수를 뜻합니다.

class Solution {
    public boolean isUgly(int n) {
        if (n <= 0) return false;
        while (n % 2 == 0) {
            n /= 2;
        }
        while (n % 3 == 0) {
            n /= 3;
        }
        while (n % 5 == 0) {
            n /= 5;
        }
        if (n == 1) return true;
        return false;
    }
}

 

코드를 설명하자면 간단합니다. 우선, 음의 정수인 경우에는 다 거짓을 반환합니다. 그러고, n이 2로 나눠질 수 있는 수라면, 2로 더 이상 나누어질 수 없을 때까지 나눕니다. 후에, n이 3으로 나뉠 수 있는 수라면, 같은 로직으로 나뉠 수 없을 때까지 나눕니다. 5랑도 동일한 방법이고. 마지막에는 n이 1이라면, 어글리 넘버가 맞고, 아니면 거짓을 리턴하면 되는 아주 간단한 코드입니다.


Runtime 결과