Today I Learn (20220330)
์ค๋ ์ค์ ์๋ ๊ต์๋๊ป์ ์ ๋ฒ์ ์ฃผ์ BFS๋ฌธ์ ๋ฅผ ํ์ดํ๋๋ฐ ๋ณด๋๋ค. ์ฌ๋ฌ๊ฐ์ ์ํ๊ธฐ ์ค ํ๋๋ฅผ ์ฐพ๊ณ ๋ถ์ ์ฐพ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด ๊ทธ ์ํ๊ธฐ ์ค ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์๋๋ฐ... ๋ด ์ฝ๋๋ ์ํ๊ธฐ๋ง ์ฐพ๊ณ ๋๋๋ ์ฝ๋๋ก ๋์ด๋ฒ๋ ธ๋ค. ๊ทธ๋์ ๋ค๋ฅธ ๋ถ์๊ฒ ํผ๋๋ฐฑ ๋ฐ์๋ค.
๊ตฌํ ์์๋
- ๋ถ, ์ํ๊ธฐ ์์น๋ฅผ ์ฐพ๊ณ
- for ๋ฌธ์ ํตํด ์์์ ๋ถํฐ ์ํ๊ธฐ๊น์ง, ์ํ๊ธฐ๋ถํฐ ๋ถ๊น์ง bfs ํจ์๋ฅผ ์คํํ๊ฒ ๋ง๋ค์๊ณ , ์ฌ๊ธฐ์ ๋ฆฌํด๋๋ ๊ฐ์ list์ ๋ฃ๊ณ ๊ทธ ์ค ์ต์๊ฐ์ ๋ฐํํ๊ฒ ๋ง๋ค์๋ค.
๊ทธ๋ฐ๋ฐ ๋ค๋ฅธ ํ ์ผ์์ ๋ถ์ ์ง๋๊ฐ๋ฉด ์๋๋ ์กฐ๊ฑด์ ๋ฌด์ํ์ฒด ์ฝ๋๊ฐ ๋์๊ฐ๋ค.
๊ทธ๋์ bfsํจ์์ ๋งค๊ฐ๋ณ์์ isfindFire์ด๋ผ๋ ๋ณ์๋ฅผ ๋ฃ์ด ์ํ๊ธฐ๋ฅผ ์ฐพ์ผ๋ฌ ๊ฐ๋๋ ๋ถ์ ๋ชป์ง๋๊ฐ๊ฒ ๋ง๋ค์๊ณ , ์ํ๊ธฐ์์ ๋ถ๊น์ง๋ ๋ค์ ๋ถ์ ์ฐพ๊ฒ ๋ง๋ค์ด ์คฌ๋ค.
๊ทธ๋์ ์ต์ข ์ ์ธ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
#๋ชจ์ ์๋ฐฉํ๋ จ์ ์ค์ํ๋ ๋ ์
๋๋ค.
from collections import deque
n = int(input())
arr = [list(input()) for _ in range(n)]
sy,sx=map(int,input().split())
#๋ถ ์์น, ์ํ๊ธฐ ์์น ์ฐพ๊ธฐ
fire=[]
ext=[]
for k in range(n):
for l in range(n):
if arr[k][l] == '$':
fire.append((k,l))
if arr[k][l] == 'A':
ext.append((k,l))
def bfs(sy,sx,ey,ex,isfindFire): #๋ง์ง๋ง ์ธ์๋ ๋ถ์ ์ง๋๊ฐ๋ฒ๋ฆฌ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ๋ฃ์ด์ค!
q = deque()
q.append((sy,sx,ey,ex,0))
visit=[[0]*n for _ in range(n)]
while q:
sy,sx,ey,ex,move = q.popleft()
directy=[-1,1,0,0]
directx=[0,0,-1,1]
if sy == ey and sx==ex:
return move
for i in range(4):
dy=sy+directy[i]
dx=sx+directx[i]
if 0<=dy<n and 0<=dx<n:
if visit[dy][dx]==0 and arr[dy][dx]!='#':
if isfindFire: #๋ถ์ ์ฐพ์ ๋
visit[dy][dx]=1
q.append((dy,dx,ey,ex,move+1))
else: #์ํ๊ธฐ ์ฐพ์ ๋
if arr[dy][dx]!='$':
visit[dy][dx] = 1
q.append((dy, dx, ey, ex, move + 1))
result=[]
for i in range(len(ext)):
a = bfs(sy,sx,ext[i][0],ext[i][1],False) #์์์ ๋ถํฐ ์ํ๊ธฐ๊น์ง
b = bfs(ext[i][0],ext[i][1],fire[0][0],fire[0][1],True) #์ํ๊ธฐ๋ถํฐ ๋ถ๊น์ง
result.append(a+b)
print(min(result))
+)์ค๋์ knapsack๊ณผ heap์ ๋ํด ๋ฐฐ์ ๋ค. ์์ง๋ DP๊ฐ ์ต์ํ์ง ์๊ณ ๊ตฌํ ์์ฒด๋ฅผ ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ๋ค. ํ์ต์ด ๋ถ์กฑํ๋ค๋ ๋๋์ด ๋งค์ผ๋งค์ผ ๊ฐ๋ ฌํ๊ฒ ๋ ๋ค. ์ด๋ฒ์ฃผ ๋ฉํ ๋ง์์ ๋ค์ DP๋ฅผ ๋ณต์ตํ๊ฒ ๋ ๊ฑฐ ๊ฐ์๋ฐ ๋จ๋ค๋ณด๋ค ๋ ๋ง์ด ๋ ธ๋ ฅํด์ผ๊ฒ ๋ค.....ใ ใ ์ผ๋จ ์ค๋์ ๊ต์๋์ ์ฝ๋๋ฅผ ํธ๋ ์ด์ค ํ๋ฉฐ ๋ค์ ํผ์ ์ ์ด๋ณด๋ ์ฐ์ต์ 3๋ฒ ์ด์์ ํด๋ด์ผ๊ฒ ๋ค.
knapsack
- Fractinoal Knapsack
- 0/1 (=>DP๋ฌธ์ )
**๋ฐฐ๋ญ ๋ฌธ์ **(Knapsack Problem ๋ ์ ํ๋ผ๋ธ๋ผ[[*](https://ko.wikipedia.org/wiki/์ํค๋ฐฑ๊ณผ:์์ด์_ํ๊ธ_ํ๊ธฐ)])๋ [์กฐํฉ ์ต์ ํ](https://ko.wikipedia.org/wiki/์กฐํฉ_์ต์ ํ)์ ์ ๋ช ํ ๋ฌธ์ ์ด๋ค.
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด, ํ ์ฌํ๊ฐ๊ฐ ๊ฐ์ง๊ณ ๊ฐ๋ ๋ฐฐ๋ญ์ ๋ด์ ์ ์๋ ๋ฌด๊ฒ์ ์ต๋๊ฐ์ด ์ ํด์ ธ ์๊ณ , ์ผ์ ๊ฐ์น์ ๋ฌด๊ฒ๊ฐ ์๋ ์ง๋ค์ ๋ฐฐ๋ญ์ ๋ฃ์ ๋, ๊ฐ์น์ ํฉ์ด ์ต๋๊ฐ ๋๋๋ก ์ง์ ๊ณ ๋ฅด๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
์ด ๋ฐฐ๋ญ๋ฌธ์ ๋ ์ง์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ(๋ฌด๊ฒ๊ฐ [์์])์ผ ์ ์๋ ๊ฒฝ์ฐ)์ ์ง์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ(์ด ๊ฒฝ์ฐ ์ง์ ๋ฌด๊ฒ๋ 0 ์ด์์ ์ ์๋ง ๊ฐ๋ฅ) ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋๋ฐ, ์ง์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ์ ๋ฐฐ๋ญ๋ฌธ์ ๋ฅผ **๋ถํ ๊ฐ๋ฅ ๋ฐฐ๋ญ๋ฌธ์ **(Fractional Knapsack Problem), ์ง์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ์ ๋ฐฐ๋ญ๋ฌธ์ ๋ฅผ **0-1 ๋ฐฐ๋ญ๋ฌธ์ **(0-1 Knapsack Problem)๋ผ ๋ถ๋ฅธ๋ค.
์ด ๋ฌธ์ ๋ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ์๋ [๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ]์ผ๋ก [๋คํญ ์๊ฐ], ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ์๋ [๋์ ๊ณํ๋ฒ](Dynamic Programming)๋ฑ์ผ๋ก [์์ฌ ๋คํญ ์๊ฐ]์ ํ ์ ์๋ค. ๋จ, ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ๋ [NP-์์ ]์ด๊ธฐ ๋๋ฌธ์ ์๋ ค์ง ๋คํญ ์๊ฐ [์๊ณ ๋ฆฌ์ฆ]์ ์๊ณ , [FPTAS]๋ง ์กด์ฌํ๋ค.
์ถ์ฒ: wikipedia(https://ko.wikipedia.org/wiki/%EB%B0%B0%EB%82%AD_%EB%AC%B8%EC%A0%9C)
ํ ๋ฌ ํ๋ฉด ๊ตญ๊ฐ์ ๋ถ๋ฆ์ ๋ฐ๊ฒ ๋๋ ๋ผ์ด์ธ์ ์ฌํ์ ๊ฐ๋ ค๊ณ ํ๋ค.
์ธ์๊ณผ์ ๋จ์ ์ ์ฌํผํ๋ฉฐ ์ต๋ํ ์ฆ๊ธฐ๊ธฐ ์ํ ์ฌํ์ด๊ธฐ ๋๋ฌธ์,
๊ฐ์ง๊ณ ๋ค๋ ๋ฐฐ๋ญ ๋ํ ์ต๋ํ ๊ฐ์น ์๊ฒ ์ธ๋ ค๊ณ ํ๋ค.
๋ผ์ด์ธ์ด ์ฌํ์ ํ์ํ๋ค๊ณ ์๊ฐํ๋ N๊ฐ์ ๋ฌผ๊ฑด์ด ์๋ค.
๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ W์ ๊ฐ์น V๋ฅผ ๊ฐ์ง๋๋ฐ, ํด๋น ๋ฌผ๊ฑด์ ๋ฐฐ๋ญ์ ๋ฃ์ด์ ๊ฐ๋ฉด ๋ผ์ด์ธ์ V๋งํผ ์ฆ๊ธธ ์ ์๋ค.
์์ง ํ๊ตฐ์ ํด๋ณธ ์ ์ด ์๋ ๋ผ์ด์ธ์ ์ต๋ K๋งํผ์ ๋ฌด๊ฒ๋ง์ ๋ฃ์ ์ ์๋ ๋ฐฐ๋ญ๋ง ๋ค๊ณ ๋ค๋ ์ ์๋ค.
๋ผ์ด์ธ์ด ์ต๋ํ ์ฆ๊ฑฐ์ด ์ฌํ์ ํ๊ธฐ ์ํด ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์๋ ๋ฌผ๊ฑด๋ค์ ๊ฐ์น์ ์ต๋๊ฐ์ ์๋ ค์ฃผ์.
์
๋ ฅ
์ฒซ ์ค์ ๋ฌผํ์ ์ N(1 โค N โค 100)๊ณผ ์ค์๊ฐ ๋ฒํธ ์ ์๋ ๋ฌด๊ฒ K(1 โค K โค 100,000)๊ฐ ์ฃผ์ด์ง๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑฐ์ณ ๊ฐ ๋ฌผ๊ฑด์ ๋ฌด๊ฒ W(1 โค W โค 100,000)์
ํด๋น ๋ฌผ๊ฑด์ ๊ฐ์น V(0 โค V โค 1,000)๊ฐ ์ฃผ์ด์ง๋ค.
์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ชจ๋ ์๋ ์ ์์ด๋ฉฐ ์ ํ์๊ฐ์ 2์ด ์ด๋ค.
์ถ๋ ฅ
ํ ์ค์ ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์๋ ๋ฌผ๊ฑด๋ค์ ๊ฐ์นํฉ์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
4 7
6 13
4 8
3 6
5 12
์ถ๋ ฅ
14
n, k = map(int, input().split())
knapsack = [[0 for _ in range(k + 1)] for _ in range(n + 1)] # ๋ฐฐ์ด
item = [[0, 0]]
for i in range(1,n+1): # ์์ดํ
์
๋ ฅ
item.append(list(map(int, input().split())))
for i in range(1, n + 1): # ์์ดํ
๊ฐ์๋งํผ ๋ฐ๋ณต
for j in range(1, k + 1): # ์ต๋๋ฌด๊ฒ๊น์ง ๋ฐ๋ณต
weight = item[i][0]
value = item[i][1]
if j < weight: # ๋ฌด๊ฒ๊ฐ ์์ดํ
๋ฌด๊ฒ๋ณด๋ค ์์ผ๋ฉด
knapsack[i][j] = knapsack[i - 1][j] # ์์ ๊ฐ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๊ธฐ
else:
knapsack[i][j] = max(value + knapsack[i-1][j - weight], knapsack[i - 1][j])
# ํ์ฌ ์์ดํ
๊ฐ์น + ๊ทธ์ ๋จ๊ณ์์ ๊ตฌํ ๋จ์๋ฌด๊ฒ์ ์ต๋๊ฐ์น (ํ์ฌ ์์ดํ
+ ์์ค(๋จ์ kg๋งํผ)
# vs ๊ทธ์ ๋จ๊ณ์์ ๊ตฌํ ํ์ฌ ์์ดํ
์ ์ต๋๊ฐ์น ( ์์ค )
print(knapsack[n][k])
Heap
heap์ ์๋ฒฝํ ์ด์ง ํธ๋ฆฌ์ ํํ์ด๋ฉฐ, nlogn์ ์๋๋ฅผ ๊ฐ๊ณ ์๋ค.
์ด ์ด์งํธ๋ฆฌ๋ฅผ ์ผ์ฐจ์ ๋ฆฌ์คํธ๋ก ํํ ๊ฐ๋ฅํ๋ฐ ์ด๋, index๋ ์ผ์ชฝ ์์์ ๋ถ๋ชจ์ ์ธ๋ฑ์คx2, ์ค๋ฅธ์ชฝ ์์์ ๋ถ๋ชจ์ ์ธ๋ฑ์คx2+1์ ๊ฐ์ ๊ฐ๋๋ค.
max heap

๋ถ๋ชจ๋ ํญ์ ์์๋ณด๋ค ์ปค์ผํ๋ค. ๋ฐ๋ผ์ ๋ถ๋ชจ๊ฐ ์์ผ๋ฉด ์์๊ณผ swapํด์ค์ผํจ.
-์ฝ์
insert๊ณผ์ ์์๋ ์ ค ์๋ง ํฐ ์์ด๊ณ , ์๋๋ ์ ๋ ฌ๋์ด์์ง ์๋ค. ๋จ์ง, ์์์ด ๋ถ๋ชจ๋ณด๋ค ์๋ค๋ ๊ฒ์ผ๋ฟ.
-์ถ๋ ฅ
๋ฐ๋ผ์ ์ถ๋ ฅ ๊ณผ์ ์ ํตํด ์ด๋ฅผ ์ ๋ ฌํ์ฌ heap์ ๋ ฌ์ด ๊ฐ๋ฅํด์ง๋ค.
arr=[4,7,8,1,5,3,6,9] # Maxheap
heap=[0]*20
hindex=1 # ํ ์ด๋ผ๋ 1์ฐจ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์ญํ
def insert(value):
global heap,hindex
heap[hindex]=value
now=hindex
hindex+=1
while 1:
parents=now//2 # ๋ถ๋ชจ ์ธ๋ฑ์ค ํ์ธ
if parents==0: break # ์ฒ์์ ์ธ๋ฑ์ค๊ฐ 1์ด๋ฉด ๊ทธ๋ฅ ๋๊ธฐ
if heap[parents]>heap[now]: break # ๋ถ๋ชจ๊ฐ ๋ ํฌ๋ฉด ์ค์ ์ํจ
heap[parents],heap[now]=heap[now],heap[parents] # ๋ถ๋ชจ๊ฐ ์ง๊ธ ๋ค์ด์จ ์ ๋ณด๋ค ์์ผ๋ฉด ์ค์
now=parents # ๋ถ๋ชจ๋ฅผ ๊ทธ๋ค์ now๋ก ๋๊ณ ์๋ก ์ฌ๋ผ๊ฐ๋ฉด์ ๊ทธ๋ค์ ๋ถ๋ชจ๋ ๋น๊ต!!
def top():
global heap
return heap[1] # 1๋ฒ ์ธ๋ฑ์ค์๊ฐ (๋ฃจํธ๋
ธ๋ ๋ฆฌํด)
def pop():
global heap,hindex
heap[1]=heap[hindex-1] # ๋งจ ๋ค์ ์๋ ์์ด๋ฅผ ๋ฃจํธ๋ก ์ผ๋จ ์ฎ๊ธฐ๊ธฐ
heap[hindex]=0
hindex-=1
now=1
while 1:
son=now*2 # ์ผ์ชฝ์์
rson=son+1 # ์ค๋ฅธ์ชฝ ์์
# ์ค๋ฅธ์ชฝ์ ์์์ด ์๊ณ ๊ทธ๋ฆฌ๊ณ ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์์๋น๊ตํ๋๋ฐ
# ์ค๋ฅธ์ชฝ์ด ๋ ํฌ๋ค๋ฉด ์์์ ์ค๋ฅธ์ชฝ์ฐ ํ๊ฒ ์
if heap[rson]!=0 and heap[son]<heap[rson]: son=rson
if heap[now]>=heap[son]: break # ๋ถ๋ชจ๊ฐ ๋ด๊ฐ ์ฐํ ์์๋ณด๋ค ํฌ๋ฉด ๋ธ๋ ์ดํฌ
heap[now],heap[son]=heap[son],heap[now] # ๊ทธ๊ฒ ์๋๋ฉด ์ค์
now=son # ํธ๋ฆฌ์ ๋ฐ์ผ๋ก ๋ด๋ ค๊ฐ๋ฉด์ while ๋๋ฉฐ ๊ทธ ๋ฐ์ ์์๊ณผ ๋น๊ต
for i in range(len(arr)):
insert(arr[i]) # ํธ๋ฆฌ์ ํํ๋ก ์ ์ฅ (1์ฐจ๋ฐฐ์ด)
for i in range(len(arr)):
print(top(),end=' ') # ๋ฃจํธ๋
ธ๋ ์ถ๋ ฅ
pop() # ๋งจ๋ค์ ์๋์์ด๋ฅผ 1๋ฒ ์ธ๋ฑ์ค๋ก ์ฌ๋ฆฌ๊ณ ์์๋ค์ด๋ ๋น๊ต
min heap
max heap๊ณผ ๋ฐ๋๋ก ์ ค ์์ ๊ฐ์ด ๋ฃจํธ์ ์ค๊ฒ ๋๋ค.

#Min heap
arr = [4,7,8,1,5,3,6,9]
INF=9889798698643
heap = [INF]*20 #Min heap์ด๊ธฐ ๋๋ฌธ์ ํฐ ๊ฐ์ ๋ฃ์ด์ค๋ค!
hindex=1
def insert(value):
global heap, hindex
heap[hindex]=value
now=hindex
hindex+=1
while 1:
parents=now//2 #๋ถ๋ชจ ์ธ๋ฑ์ค ํ์ธ
if parents==0: break
if heap[parents]<heap[now]:break
heap[parents],heap[now] = heap[now],heap[parents] #๋ถ๋ชจ๊ฐ ๋ ํฌ๋ฉด ์ค์ํ๊ธฐ
now = parents
def top():
global heap
return heap[1] #๋ฃจํธ ๋
ธ๋ ๋ฆฌํด
def pop():
global heap, hindex
heap[1]=heap[hindex-1]
heap[hindex]=INF #max heap์์๋ 0์ผ๋ก ์ด๊ธฐํ ํ์ง๋ง, min heap์ INF๋ก !!!!
hindex-=1
now=1
while 1:
son = now*2 #์ผ์ชฝ์์
rson = son+1 #์ค๋ฅธ์ชฝ ์์
if heap[rson] !=0 and heap[son]>heap[rson]: #์ค๋ฅธ์ชฝ ์์์ด ์๋ค๋ฉด ์ค๋ฅธ์ชฝ ์ฐ
son = rson
if heap[now]<=heap[son]:break #๋ถ๋ชจ๊ฐ ๋ด๊ฐ ์ฐํ ์์๋ณด๋ค ์์ผ๋ฉด ๋ฉ์ถ๊ธฐ
heap[now],heap[son]=heap[son],heap[now]
now=son
for i in range(len(arr)):
insert(arr[i])
for i in range(len(arr)):
print(top(),end=' ') #root node ์ถ๋ ฅํ๊ธฐ
pop() #heap sort
#๊ต์๋์ฝ๋
arr=[4,7,8,1,5,3,6,9] #Minheap
heap=[0]*50
hindex=1 # ํ ์ด๋ผ๋ 1์ฐจ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์ญํ
def insert(value):
global heap,hindex
heap[hindex]=value
now=hindex
hindex+=1
while 1:
parents=now//2
if parents==0: break
if heap[parents]<=heap[now]: break
heap[parents],heap[now]=heap[now],heap[parents]
now=parents
def top():
global heap
return heap[1] # 1๋ฒ ์ธ๋ฑ์ค์๊ฐ (๋ฃจํธ๋
ธ๋ ๋ฆฌํด)
def pop():
global heap,hindex
heap[1]=heap[hindex-1] # ๋งจ ๋ค์ ์๋ ์์ด๋ฅผ ๋ฃจํธ๋ก ์ผ๋จ ์ฎ๊ธฐ๊ธฐ
heap[hindex]=0
hindex-=1
now=1
while 1:
son=now*2 # ์ผ์ชฝ์์
rson=son+1 # ์ค๋ฅธ์ชฝ ์์
if rson<=hindex and heap[son]>heap[rson]: son=rson
if son>hindex or heap[now]<heap[son]: break
heap[now],heap[son]=heap[son],heap[now]
now=son
for i in range(len(arr)):
insert(arr[i]) # ํธ๋ฆฌ์ ํํ๋ก ์ ์ฅ (1์ฐจ๋ฐฐ์ด)
for i in range(len(arr)):
print(top(),end=' ') # ๋ฃจํธ๋
ธ๋ ์ถ๋ ฅ
pop() # ๋งจ๋ค์ ์๋์์ด๋ฅผ 1๋ฒ ์ธ๋ฑ์ค๋ก ์ฌ๋ฆฌ๊ณ ์์๋ค์ด๋ ๋น๊ต
์ถ๊ฐ์ ์ธ TIL....
ํ..... ๊ต์๋์ด ๋ถ๋ฑํธ๋ง ์ ๋ฐ๊พธ๋ฉด ๋๋ค๊ณ ํด์ ๋ถ๋ฑํธ๋ง ๋ฐ๊ฟจ๋๋ฐ..... ์ธ๋ฑ์ค ์ค๋ฅ๊ฐ ๋ฌ๋ค...
์ด์ ๋ heap์ ์์ฑํ ๋ 0์ผ๋ก ์ด๊ธฐํํด์ ๋ง๋ค์๋๋ฐ.... ์ด๊ฒ ๋ฌธ์ ์๋ค!
์ผ์ชฝ, ์ค๋ฅธ์ชฝ ๋น๊ตํ ๋ ์์๊ฑฐ๋ก ์ค์ํ๋๋ฐ ๊ทธ ์ค๋ฅธ์ชฝ ๊ฐ์ด 0์ด๋๊น ๋น์ฐํ ๊ณ์ .....๊ณ์.... now=son๋ถ๋ถ์ด ๊ณ์ ๊ฐ๋ฒ๋ ธ๋ค....
๊ทธ๋์ INF = 879886451 ์ด๋ฐ๊ฑธ ๋ง๋ค์ด ์ด๊ฑฐ๋ก ์ฒ์์ heap์ ๋ค๋ ์ด๊ธฐํ ํ๊ณ , pop()์์ hindex๋ถ๋ถ๋ INF๋ก ์ด๊ธฐํํจ์ผ๋ก์จ ํด๊ฒฐ๋์๋ค.
์ด๊ฒ๋ ๋ค๋ฅธ๋ถ๊ป ๋์์ ๋ฐ์ ํด๊ฒฐํ๋ค....^,ใ ์์ง ๋๋ฒ๊น ํด๋ ๋ฌธ์ ๋ฅผ ๊ณ ์น๋ ๊ฒ์ ํ๊ณ๊ฐ ๋๊ปด์ง๋ค...
'๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.06.์ (0) | 2022.04.06 |
---|---|
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.05.ํ (0) | 2022.04.06 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.04.์ (0) | 2022.04.04 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.03.31.๋ชฉ (0) | 2022.03.31 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.03.29.ํ (0) | 2022.03.30 |
๋๊ธ