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

๐Ÿงฉ Algorithm17

[๋ฐฑ์ค€] 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.
[๋ฐฑ์ค€] 1929๋ฒˆ: ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ Hint 1. 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์„ ํ•˜๊ณ , ์†Œ์ˆ˜์ด๋ฉด ๊ทธ ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋“ค์€ ์†Œ์ˆ˜์ผ๊นŒ์š”? 2. ์†Œ์ˆ˜์˜ ๋ฐฐ์ˆ˜๋“ค์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ๊ฒŒ ํ™•์‹คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ์ œ๊ฑฐํ•ด์ฃผ๋ฉด ๋‚˜์ค‘์— ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค! 3. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์ด์šฉํ•˜๊ธฐ (๊ทธ๊ฒŒ ๋ญ์ง€?) ๋ฐฑ์ค€ 1929๋ฒˆ: ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ (ํ’€์–ด๋ณด๊ธฐ) import sys M, N = map(int, sys.stdin.readline().split()) # N๊นŒ์ง€์˜ ์ˆซ์ž์˜ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ # ์ด๊ฒƒ์ด ์—๋ ˆ์Šคํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด! is_prime = [True] * (N+1) is_prime[0], is_prime[1] = False, False # 2๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋Š” ๋ชจ๋‘ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  False๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ f.. 2023. 2. 18.
[๋ฐฑ์ค€] 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ Hint 1. n์—์„œ 2๋‚˜ 3์„ ๋‚˜๋ˆ„๊ฑฐ๋‚˜ 1์„ ๋บ„ ์ƒ๊ฐํ•˜์ง€ ๋ง๊ณ  1๋ถ€ํ„ฐ ๊ณ ๋ คํ•˜๋Š” ์ฝ”๋“œ๋กœ ์งœ์•ผํ•จ 2. 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ๊ฐ๊ฐ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„  ๋ช‡๋ฒˆ์˜ ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ์ง€ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•จ 3. Memoization ๊ธฐ๋ฒ• ํ™œ์šฉ ๋ฐฑ์ค€ 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ (ํ’€์–ด๋ณด๊ธฐ) n = int(input()) ans = [0] * (n+1) # ans[i] = i๊ฐ€ 1์ด ๋˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ ํšŸ์ˆ˜ for i in range(2, n+1): ans[i] = ans[i-1] + 1 # ๋””ํดํŠธ๋กœ๋Š” ๊ทธ ์ „ ์ˆซ์ž์—์„œ +1 ํ•œ๊ฑฐ๋‹ˆ๊นŒ ํšŸ์ˆ˜๋„ ๊ทธ ์ „ ์ˆซ์ž์˜ ํšŸ์ˆ˜์— +1 ํ•œ๊ฒƒ์ž„ if i % 3 == 0: ans[i] = min(ans[i], ans[i // 3] + 1) # ๋””ํดํŠธ์™€ x3 ํ•˜๊ธฐ ์ „์˜ ์ˆซ์ž์˜ ํšŸ์ˆ˜์—์„œ +1 ํ•œ๊ฑฐ ์ค‘์— ๋” ์ž‘์€.. 2023. 2. 17.
์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด Goal 1. ์†Œ์ˆ˜ ์ •์˜ํ•˜๊ธฐ 2. ์†Œ์ˆ˜ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - "์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด" ์ดํ•ดํ•˜๊ธฐ ์†Œ์ˆ˜๋ž€? ์†Œ์ˆ˜๋ž€ ์ˆซ์ž ์ค‘ ๋‚˜ ์ž์‹ ๊ณผ 1๋กœ๋งŒ ๋‚˜๋ˆ ์ง€๋Š” ์ˆ˜๋‹ค. ์ฆ‰, ๊ทธ 2๊ฐœ์˜ ์ˆ˜ ์ด์™ธ์˜ ๋‹ค๋ฅธ ์ˆ˜๋กœ ๋‚˜๋ˆ ์ง„๋‹ค๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ "ํ•ฉ์„ฑ์ˆ˜" ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค! ์˜ˆ์‹œ) ์†Œ์ˆ˜ : 2, 3, 5, 7, 11, 13, 17, 19, ... ๊ทธ ์™ธ : 4 (2๋กœ ๋‚˜๋ˆ ์ง€๋‹ˆ๊นŒ), 6 (2์™€ 3์œผ๋กœ ๋‚˜๋ˆ ์ง€๋‹ˆ๊นŒ), 8 (2๋กœ ๋‚˜๋ˆ ์ง€๋‹ˆ๊นŒ), 9 (3์œผ๋กœ ๋‚˜๋ˆ ์ง€๋‹ˆ๊นŒ), ... "์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด"๋Š” ์–ธ์ œ ํ•„์š”ํ•œ๊ฐ€? N์ด๋ผ๋Š” ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 2๋ถ€ํ„ฐ N/2 ๊นŒ์ง€์˜ ์ˆซ์ž๋กœ ๋‚˜๋ˆ ๋ด์•ผ ์•Œ ์ˆ˜ ์žˆ๋‹ค ํ•˜์ง€๋งŒ 2๋ถ€ํ„ฐ 100๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘์—์„œ ์†Œ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ด์ค‘ for๋ฌธ์„ ๋Œ๋ ค์•ผํ•˜๊ณ  ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)์œผ๋กœ ๋Š๋ฆฌ๋‹ค .. 2023. 2. 13.
ํž™(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.