관리 메뉴

솜씨좋은장씨

[leetCode] 313. Super Ugly Number (Python) 본문

Programming/코딩 1일 1문제

[leetCode] 313. Super Ugly Number (Python)

솜씨좋은장씨 2020. 11. 20. 00:44
728x90
반응형

Write a program to find the nth super ugly number.

Super ugly numbers are positive numbers whose all prime factors are in the given prime list primes of size k.

 

Example:

Input: n = 12, primes = [2,7,13,19]
Output: 32 
Explanation: [1,2,4,7,8,13,14,16,19,26,28,32] is the sequence of the first 12 
             super ugly numbers given primes = [2,7,13,19] of size 4.

Note:

  • 1 is a super ugly number for any given primes.
  • The given numbers in primes are in ascending order.
  • 0 < k ≤ 100, 0 < n ≤ 106, 0 < primes[i] < 1000.
  • The nth super ugly number is guaranteed to fit in a 32-bit signed integer.

Solution

class Solution:
    def nthSuperUglyNumber(self, n: int, primes: List[int]) -> int:
        if n < 0:
            return False
        
        t = len(primes) * [0]
        res = [1]
        while len(res) < n:
            pow_num = pow(2, 32)
            for i in range(len(primes)):
                temp = res[t[i]] * primes[i]
                if temp < pow_num:
                    pow_num = temp
            for j in range(len(primes)):
                if pow_num == res[t[j]] * primes[j]:
                    t[j] += 1
            res.append(pow_num)
        return res[-1]

 

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments