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이라면, 어글리 넘버가 맞고, 아니면 거짓을 리턴하면 되는 아주 간단한 코드입니다.
'LeetCode' 카테고리의 다른 글
[LeetCode] - 461. Hamming Distance (0) | 2024.07.22 |
---|---|
[LeetCode] - 58. Length of Last Word (2) | 2024.07.22 |
[LeetCode] - 66. Plus One (0) | 2024.07.21 |
[LeetCode] - 744. Find Smallest Letter Greater Than Target (0) | 2024.07.19 |
[LeetCode] - 28. Find the Index of the First Occurrence in a String (0) | 2024.07.19 |