๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿงฉ Algorithm/์šฐ์„ ์ˆœ์œ„ ํ6

[๋ฐฑ์ค€] 1927๋ฒˆ: ์ตœ์†Œ ํž™ Hint 1. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ ์ด์šฉํ•˜๊ธฐ (ํž™์ด๋ž€?) 2. ํž™์—์„œ heappop()์„ ํ•˜๋ฉด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋ฐ˜ํ™˜ ๋จ ๋ฐฑ์ค€ 1927๋ฒˆ: ์ตœ์†Œ ํž™ import heapq import sys n = int(sys.stdin.readline()) heap = [] # ํž™ ๋งŒ๋“ค๊ธฐ(๋ฆฌ์ŠคํŠธ๋ž‘ ๋งŒ๋“œ๋Š” ๋ฒ•์€ ๋˜‘๊ฐ™์Œ) for i in range(n): num = int(sys.stdin.readline()) if num == 0: # input ์ˆซ์ž๊ฐ€ 0 ์ด๋ฉด ํ˜„์žฌ ํž™์— ๋“ค์–ด์žˆ๋Š” ์ตœ์†Œ๊ฐ’ ์ถœ๋ ฅํ•˜๊ธฐ print(heapq.heappop(heap) if heap != [] else 0) # ํž™์ด ๋น„์–ด์žˆ์ง€ ์•Š์„ ๋•Œ๋งŒ heappop() ํ•˜๊ธฐ else: heapq.heappush(heap, num) # ํž™์— ์ˆซ์ž ๋„ฃ๊ธฐ 2023. 2. 28.
[๋ฐฑ์ค€] 11279๋ฒˆ: ์ตœ๋Œ€ ํž™ Hint 1. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ ์ด์šฉํ•˜๊ธฐ (ํž™์ด๋ž€?) 2. ํž™์—์„œ heappop()์„ ํ•˜๋ฉด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋ฐ˜ํ™˜ ๋จ. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด..? 3. ํž™์— ๋„ฃ์€ ์ˆซ์ž๋“ค์„ ๋งˆ์ด๋„ˆ์Šค ํ•ด์„œ ๋„ฃ๋Š”๋‹ค๋ฉด heappop() ํ–ˆ์„ ๋•Œ ์–ด๋–ค ์ˆซ์ž๊ฐ€ ๋จผ์ € ๋ฝ‘ํž๊นŒ? ๋ฐฑ์ค€ 11279๋ฒˆ: ์ตœ๋Œ€ ํž™ import heapq import sys n = int(sys.stdin.readline()) heap = [] # ํž™ ๋งŒ๋“ค๊ธฐ(๋ฆฌ์ŠคํŠธ๋ž‘ ๋งŒ๋“œ๋Š” ๋ฒ•์€ ๋˜‘๊ฐ™์Œ) for i in range(n): num = int(sys.stdin.readline()) if num == 0: # input ์ˆซ์ž๊ฐ€ 0 ์ด๋ฉด ํ˜„์žฌ ํž™์— ๋“ค์–ด์žˆ๋Š” ์ตœ๋Œ€๋Œ€๊ฐ’ ์ถœ๋ ฅํ•˜๊ธฐ print((heapq.heappop(heap))*(-1) if heap != [] el.. 2023. 2. 26.
[๋ฐฑ์ค€] 2075๋ฒˆ: N๋ฒˆ์งธ ํฐ ์ˆ˜ Hint 1. ์šฐ์„ ์ˆœ์œ„ ํ - ํž™(heap) ์ž๋ฃŒ๊ตฌ์กฐ ์ด์šฉํ•˜๊ธฐ (๊ทธ๊ฒŒ ๋ญ์ง€?) 2. ํž™์—์„œ heappop()์„ ์ด์šฉํ•˜๋ฉด ์ž‘์€ ์ˆ˜ ๋ถ€ํ„ฐ ์ถœ๋ ฅ๋œ๋‹ค! ๋ฐฑ์ค€ 2075๋ฒˆ: N๋ฒˆ์งธ ํฐ ์ˆ˜ (ํ’€์–ด๋ณด๊ธฐ) import heapq N = int(input()) heap = []# ์ƒˆ๋กœ์šด ํž™ ๋งŒ๋“ค๊ธฐ for i in range(N): for num in map(int, input().split()): heapq.heappush(heap, num)# ํž™์— ์ˆซ์ž ์‚ฝ์ž…ํ•˜๊ธฐ if len(heap) > N:# ํž™์˜ ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ N๊ฐœ๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด heapq.heappop(heap)# ํž™์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜ ์ œ๊ฑฐํ•˜๊ธฐ print(heapq.heappop(heap))# N๋ฒˆ์งธ๋กœ ํฐ ์ˆ˜ ์ถœ๋ ฅํ•˜๊ธฐ 2023. 2. 24.
[๋ฐฑ์ค€] 11286๋ฒˆ: ์ ˆ๋Œ“๊ฐ’ ํž™ Hint 1. ํž™ ์ž๋ฃŒ๊ตฌ์กฐ์— ํŠœํ”Œ์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค 2. ํž™ ์•ˆ์˜ ํŠœํ”Œ์€ ๋“ค์–ด์žˆ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž‘์€๊ฑฐ๋ถ€ํ„ฐ ํฐ๊ฑฐ๊นŒ์ง€ ์ •๋ ฌ๋œ๋‹ค 3. ํž™ ์‘์šฉ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ (์—ฌ๊ธฐ) ๋ฐฑ์ค€ 11286๋ฒˆ (ํ’€์–ด๋ณด๊ธฐ) import heapq import sys heap = [] for i in range(int(sys.stdin.readline())): n = int(sys.stdin.readline()) if n == 0: if heap == []: print(0) else: print(heapq.heappop(heap)[1])# ๊ฐ€์žฅ ์ž‘์€ ์ ˆ๋Œ“๊ฐ’์„ ๊ฐ€์ง„ ์ˆซ์ž n ์ถœ๋ ฅํ•˜๊ธฐ else: heapq.heappush(heap, (abs(n), n))# ํŠœํ”Œ ํ˜•ํƒœ๋กœ n์˜ ์ ˆ๋Œ“๊ฐ’๊ณผ n์„ ๋‘˜ ๋‹ค ๋„ฃ์–ด์คŒ 2023. 2. 21.
ํž™(Heap) ์‘์šฉ๋ฐฉ๋ฒ• Goal 1. ํž™์˜ ์‘์šฉ ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ ํ•จ์ˆ˜ heappop() ์ด์šฉํ•˜๊ธฐ ์ค‘์š”ํ•œ ์ ์€ heapq.heappop(heap)์€ ํ•ญ์ƒ heap์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ž‘์€ ์ˆ˜ โžก๏ธ ํฐ ์ˆ˜ ์•„๋ž˜์™€ ๊ฐ™์ด 1์—์„œ 5๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ์žˆ์„ ๋•Œ heap์„ ์ด์šฉํ•˜๋ฉด ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ฝ‘๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๋‹ค. import heapq arr = [1, 2, 3, 4, 5] heap = [] for num in arr: heapq.heappush(heap, num) for i in range(len(heap)): print(heapq.heappop(heap))# ์ถœ๋ ฅ: 1 2 3 4 5 ํฐ ์ˆ˜ โžก๏ธ ์ž‘์€ ์ˆ˜ ๊ฑฐ๊พธ๋กœ ํž™์„ ์ด์šฉํ•ด์„œ ํฐ ์ˆ˜๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ฝ‘๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. import heapq arr = [1,.. 2023. 2. 10.
์šฐ์„ ์ˆœ์œ„ ํ Goal 1. ์šฐ์„ ์ˆœ์œ„ ํ ์ดํ•ดํ•˜๊ธฐ 2. ํž™(Heap) ์ž๋ฃŒ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ ์šฐ์„ ์ˆœ์œ„ ํ๋ž€? ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์›์†Œ๊ฐ€ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์›์†Œ๋ณด๋‹ค ๋จผ์ € ์ฒ˜๋ฆฌ๋œ๋‹ค ํŒŒ์ด์ฌ์—์„  ํž™(heap)์ด๋ผ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค ํž™(heap)์ด๋ž€? ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)๋กœ ๋ฃจํŠธ ๋…ธ๋“œ์— ์žˆ๋Š” ๊ฐ’์€ ํŠธ๋ฆฌ์—์„œ ์ตœ๋Œ€๊ฐ’ (Max Heap) ํ˜น์€ ์ตœ์†Œ๊ฐ’ (Min Heap)์ด๋‹ค ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ํฌ๊ฑฐ๋‚˜ (Max Heap) ํ•ญ์ƒ ์ž‘๋‹ค (Min Heap) 2023. 2. 9.