[leetcode, JS] 263. Ugly Number

mxxn·2023년 8월 16일
0

leetcode

목록 보기
29/198

문제

문제 링크 : Ugly Number

풀이

/**
 * @param {number} n
 * @return {boolean}
 */
var isUgly = function(n) {
  if(n === 1) return true
  if(n < 1) return false
  const divisors = [];
  for(let i = 1 ; i <= Math.sqrt(n) ; i++){
      if(n % i === 0) {
          divisors.push(i);
          if(n / i != i) divisors.push(n / i);
      }
  }
  for(let i=0; i<divisors.length; i++) {
    const el = divisors[i]
    if(el === 1) continue;
    if(el%2 !== 0 && el%3 !== 0 && el%5 !== 0) return false
  }
  return true
};
  1. 약수들을 구해서 해당 약수들이 2,3,5로 나눠지는지 판단하여 return
  • Runtime 82 ms, Memory 43.5 MB

다른 풀이

/**
 * @param {number} n
 * @return {boolean}
 */
var isUgly = function(n) {
    if (n <= 0) {
        return false;
    }
    
    while (n % 2 === 0) {
        n /= 2;
    }
    
    while (n % 3 === 0) {
        n /= 3;
    }
    
    while (n % 5 === 0) {
        n /= 5;
    }
    
    return n === 1;
};
  1. 2,3,5로 나누어 떨어질 때 까지 반복
  2. 남은 n의 값이 1인지 아닌지에 따라 return
  • Runtime 57 ms, Memory 42.6 MB
profile
내일도 글쓰기

0개의 댓글