์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[์ด์ฝ”ํ…Œ Ch16-35] ๋ชป์ƒ๊ธด ์ˆ˜

์€์ง„ 2022. 4. 26. 17:51

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป๋ฌธ์ œ์„ค๋ช…

[์ด์ฝ”ํ…Œ Ch16-35] ๋ชป์ƒ๊ธด ์ˆ˜


๋ชป์ƒ๊ธด ์ˆ˜๋ž€, ์†Œ์ธ์ˆ˜๋ถ„ํ•ด ํ–ˆ์„ ๊ฒฝ์šฐ ๋‚˜์˜ค๋Š” ์†Œ์ธ์ˆ˜๊ฐ€ 2, 3 ๊ทธ๋ฆฌ๊ณ  5๋ฟ์ธ ์ˆ˜๋ฅผ ์ด์•ผ๊ธฐ ํ•˜๋ฉฐ, ์ด๋ฅผ ์ˆ˜์—ด๋กœ ๋Š˜์–ด๋†“์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1, 2, 3, 4, 5, 6, 8, 9, 10, 12โ€ฆ

ํŽธ์˜์ƒ 1์„ ๋ชป์ƒ๊ธด ์ˆ˜์— ํฌํ•จํ•œ๋‹ค. ์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n๋ฒˆ์งธ ๋ชป์ƒ๊ธด ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.


์ด์ฝ”ํ…Œ

โœ๏ธIdea Sketch

์‹œ๊ฐ„๋ณต์žก๋„

O(nlogn)

heap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฐฐ์—ด ์›์†Œ ์ถ”๊ฐ€/์‚ญ์ œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(logn)์ด๋‹ค. ์ด๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ์ด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(nlogn)์ด๋‹ค.


์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ


โœ๏ธ๋‚ด ์†Œ์Šค์ฝ”๋“œ

์ด์ฝ”ํ…Œ


์ „์ฒด ์ฝ”๋“œ

  import sys
  import heapq
  si = sys.stdin.readline

  n = int(si())
  queue = [2, 3, 5]
  dp = [1]

  while len(dp) < n:
    x = heapq.heappop(queue)
    if x == dp[-1]:
    continue

    dp.append(x)
    heapq.heappush(queue, x*2)
    heapq.heappush(queue, x*3)
    heapq.heappush(queue, x*5)

  print(dp[-1])