[python] ๋ฐฑ์ค - 2014. ์์์ ๊ณฑ

๐ค๋ฌธ์ ํด๊ฒฐ
-
G2 | ์ํ, ์ฐ์ ์์ ํ
DP๋ก ๊ตฌํด๋ณด๋ ค๊ณ ํ์ง๋ง ์ญ์ ์๋์๋ค. 2**31 ๊ธธ์ด์ ๋ฐฐ์ด์ ์ข ์๋๊ฑฐ ๊ฐ๋ค.
์ด๋ ค์์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๋ฅผ ๋ณด๋ ์ฐ์ ์์ ํ๋ก ํด๊ฒฐํ๋ ๋ฌธ์ ์๋ค.
์ฐ์ ์์ํ๋ ํ ์์ ์๋ ๊ฐ๋ค ์ค ์ต์ ๊ฐ์ ๋ฐํํ ์ ์๋ค.
ํ์ด์ฌ์์๋ ํํ๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉํ๊ณ ํํ๋ ์ต์ํ ๊ธฐ๋ฐ์ผ๋ก ๋์ด์๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ์
- ์ต์ด ํํ์ ์ฃผ์ด์ง ์์๋ฅผ ๋ฃ๋๋ค.
- ํํ์์ ์ซ์๋ฅผ ํ๋์ฉ ๊บผ๋ด๋ฉด์ ์ฃผ์ด์ง ์์๋ค์ ๊ณฑํด์ ํํ์ ๋ฃ๋๋ค.
- (์ด ๋ ๊บผ๋ด๋ ํ์๊ฐ ์์์ ๊ณฑ๋ค ์ค์์ N๋ฒ์งธ ์์ด๋ค)
- ํ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด ์ค๋ณต์ด ๋ฐ์ํ๋ค. ( 2*3 ์ด๋ 3*2 )
- 3*2๋ ๋์ง๋ง 2*3์ ์๋๋ค๋ ์์ผ๋ก ํํ์์ ๊บผ๋ธ ์๊ฐ ์์๋ก ๋๋์ด ๋จ์ด์ง๋ฉด ๊ทธ ๋ค์ ์์๋ ๊ฑด๋๋ด๋ค.
- ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค

๐ป์์ค ์ฝ๋
import heapq
if __name__ == '__main__':
K, N = map(int, input().split())
prime = list(map(int, input().split()))
pq = [] # ๊ณฑํ ๊ฐ์ด ๋ค์ด๊ฐ ๋ฆฌ์คํธ (์ฐ์ ์์ ํ)
for num in prime:
heapq.heappush(pq, num)
for i in range(N): # ํ์์ N๋ฒ ๋นผ๋ฉด ๊ทธ ๊ฐ์ด N๋ฒ์งธ ๊ฐ์ด๋ค. (์ฐ์ ์์ ํ)
num = heapq.heappop(pq)
for j in range(K): # ๋บธ ๊ฐ์ ์์๋ฅผ ๊ณฑํด์ ์๋ก์ด ๊ฐ์ ๋ง๋ ๋ค.
new_num = num * prime[j]
heapq.heappush(pq, new_num)
if num % prime[j] == 0: # 2 X 3์ ๋์ง๋ง 3 X 2๋ ์๋๋ ๋๋์ผ๋ก ์ค๋ณต์ ๊ฑฐ
break
else:
print(num)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/2014
2014๋ฒ: ์์์ ๊ณฑ
์ฒซ์งธ ์ค์ K(1 โค K โค 100), N(1 โค N โค 100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ K๊ฐ์ ์์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋ค. ๊ฐ์ ์์๊ฐ ์ฌ๋ฌ ๋ฒ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฉฐ, ์ฃผ์ด์ง๋ ์์๋ ๋ชจ๋ 541๋ณด๋ค ์๊ฑฐ๋
www.acmicpc.net