DOing
[์๊ณ ๋ฆฌ์ฆ] ๋ค์ต์คํธ๋ผ ์ต๋จ๊ฒฝ๋ก with Python ๋ณธ๋ฌธ
๐ก ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ
๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ทธ๋์ '๊ธธ์ฐพ๊ธฐ'๋ฌธ์ ๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค. ํ๋ถ ์์ค์์ ์ฌ์ฉํ๋ ์ต๋จ ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ต์คํธ๋ผ ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ, ํ๋ก์ด๋ ์์ , ๋ฒจ๋ง ํฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ด๋ ๊ฒ 3๊ฐ์ง์ด๋ค. ์ด ์ค ๋ค์ต์คํธ๋ผ ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฒ ํฌ์คํ ์์ ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค.
๐ก ๋ค์ต์คํธ๋ผ ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ
ํ๋์ ์ถ๋ฐ ๋ ธ๋๋ก ๋ถํฐ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋จ, '์์ ๊ฐ์ '์ด ์์ ๋๋ง ์ ์์ ์ผ๋ก ๋์ํ๋ค. ๋ค์ต์คํธ๋ผ๊ฐ ์ฐ๊ตฌํ ์๊ณ ๋ฆฌ์ฆ ์ค ๊ฐ์ฅ ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ๊ฒ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ถ๋ฅ๋๋ค. ๋งค๋ฒ ๊ฐ์ฅ ๋น์ฉ์ด ๊ฐ์ฅ ์ ์ ๋ ธ๋๋ฅผ ์ ํํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ด๋ค.
๐ก ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ๋์๊ณผ์
1. ์ถ๋ฐ ๋ ธ๋๋ฅผ ์ค์ ํ๋ค
2. ์ต๋จ๊ฑฐ๋ฆฌ ํ ์ด๋ธ์ ์ด๊ธฐํํ๋ค.
-> ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ก ๊ฐ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ '๋ฌดํ'์ผ๋ก ์ด๊ธฐํํ๋ค
3. ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋ ์ค์์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ๋ ธ๋๋ฅผ ์ ํํ๋ค.
-> ์ด๋ ์ ํ๋ ๋ ธ๋์ ์ต๋จ๊ฑฐ๋ฆฌ๋ ํ์ ๋๋ค.
4. ํด๋น ๋ ธ๋๋ฅผ ๊ฑฐ์ณ ๋ค๋ฅธ ๋ ธ๋๋ก ๊ฐ๋ ๋น์ฉ๋ฅผ ๊ฒ์ฐํ์ฌ ์ต๋จ ๊ฑฐ๋ฆฌ ํ ์ด๋ธ์ ๊ฐฑ์ ํ๋ค.
5. 3~4 ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
๐ก ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ : ์์ฐจํ์
๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋ ์ค์์ ์ต๋จ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ๋ ธ๋๋ฅผ ์ ํํ๊ธฐ ์ํด ์์ฐจ ํ์์ ์ด์ฉํ์ฌ ์ฝ๋๋ก ๊ตฌํํ ์ ์๋ค. ์ด๋ ์๊ฐ๋ณต์ก๋๋ O(N^2)์ด๋ค. ์ด O(N)๋ฒ์ ๊ฑธ์ณ ๊ฐ์ฅ ์งง์ ๋ ธ๋๋ฅผ ๋งค๋ฒ ์ ํํ์ํด์ผํ๊ณ ํ์ฌ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๋ ธ๋๋ฅผ ๋งค๋ฒ ์ผ์ผํ ํ์ธํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ์ ์ฒด ๋ ธ๋์ ์๊ฐ 5,000๊ฐ ์ดํ๋ผ๋ฉด ์์ฐจํ์ ๋ฐฉ๋ฒ์ ์จ๋ ๊ด์ฐฎ์ง๋ง ๊ทธ ์ด์์ด๋ผ๋ฉด ํ์ ์ฌ์ฉํ๋ ๊ฐ์ ๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ผํ๋ค.
import sys
input = sys.stdin.readline # ๋น ๋ฅธ ์
๋ ฅ
INF = int(1e9) # ๋ฌดํ์ ์๋ฏธํ๋ ๊ฐ์ผ๋ก 10์ต ์ค์
# ๋
ธ๋์ ๊ฐ์, ๊ฐ์ ์ ๊ฐ์๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ
n, m = map(int, input().split())
# ์์ ๋
ธ๋ ๋ฒํธ๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ
start = int(input())
# ๋ฐฉ๋ฌธ ์ฒดํฌ
visited = [False]*(n+1)
# ์ต๋จ๊ฑฐ๋ฆฌ ํ
์ด๋ธ
distance = [INF]*(n+1)
# ๋
ธ๋ ์ฐ๊ฒฐ์ ๋ณด
graph = [[] for i in range(n+1)]
for _ in range(m):
# a๋ฒ๋
ธ๋์์ b๋ฒ ๋
ธ๋๋ก ๊ฐ๋ ๋น์ฉc
a,b,c = map(int, input().split())
graph[a].append((b,c))
# ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋ ์ค ๊ฐ์ฅ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์งง์ ๋
ธ๋์ ๋ฒํธ๋ฅผ ๋ฐํ
def get_smallest_node():
min_value = INF
index = 0
for i in range(1, n+1):
if distance[i] < min_value and not visited[i]:
min_value = distance[i]
index = i
return index
# ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ
def dijkstra(start):
# ์์ ๋
ธ๋
distance[start] = 0
visited[start] = True
# ์ถ๋ฐ๋
ธ๋์ ์ธ์ ๋
ธ๋์ ๋ํด ์ต๋จ๊ฑฐ๋ฆฌ ํ
์ด๋ธ ๊ฐฑ์
for j in graph[start]:
distance[j[0]] = j[1]
# ๋ชจ๋ ๋
ธ๋์ ๋ํด ๋ฐ๋ณต
for i in range(n-1):
# ํ์ฌ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ๋
ธ๋๋ฅผ ๊บผ๋ด์ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
now = get_smallest_node()
visited[now] = True
# ์ ํ๋ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ๋
ธ๋๋ฅผ ํ์ธ
for j in graph[now]:
# ์ ํ๋ ๋
ธ๋๋ฅผ ํตํด ๊ฐ๋ ๋น์ฉ์ ๋ค์ ๊ณ์ฐ
# ์ ํ๋ ๋
ธ๋์ ๋น์ฉ + ์ฐ๊ฒฐ๋ ๋
ธ๋๋ก ๊ฐ๋ ๋น์ฉ
cost = distance[now] + j[1]
# ์ ํ๋ ๋
ธ๋๋ฅผ ๊ฑฐ์ณ์ ๊ฐ๋ ๋น์ฉ์ด ๋ ์งง์ ๊ฒฝ์ฐ
if cost<distance[j[0]]:
distance[j[0]] = cost # ์ต๋จ๊ฑฐ๋ฆฌ ํ
์ด๋ธ ๊ฐฑ์
#๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ํ
dijkstra(start)
# ๋ชจ๋ ๋
ธ๋๋ก ๊ฐ๊ธฐ ์ํ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ๋ ฅ
for i in range(1, n+1):
# ๋๋ฌํ ์ ์๋ ๊ฒฝ์ฐ
if distance[i] == INF:
print("infinity")
else:
print(distance[i])
๐ก ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ : ์ต์ํ
๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋ ์ค ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ๋ ธ๋๋ฅผ ์ ํํ๊ธฐ ์ํด ์ต์ ํ์ ์ฌ์ฉํ๋ค.
ํ์ด์ฌ์ heapq๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์๋ก ํํ์ ๋ฐ์ผ๋ฉด ํํ์ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ์ ์์ ํ๋ฅผ ๊ตฌ์ฑํ๋ค. ๋ฐ๋ผ์ (๊ฑฐ๋ฆฌ, ๋ ธ๋ ๋ฒํธ) ์์๋๋ก ํํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํด ์ฐ์ ์์ ํ์ ๋ฃ์ผ๋ฉด ๊ฑฐ๋ฆฌ์์ผ๋ก ์ ๋ ฌ๋๋ค. ํ์์ ๋ ธ๋๋ฅผ ๊บผ๋๋๋ฐ ๋ง์ฝ ํด๋น ๋ ธ๋๋ฅผ ์ด๋ฏธ ์ฒ๋ฆฌํ์ ์ด ์๋ค๋ฉด ๋ฌด์ํ๊ณ ์์ง ์ฒ๋ฆฌํ์ง ์์ ๋ ธ๋์ ๋ํด์๋ง ์ฒ๋ฆฌํ๋ฉด๋๋ค.
import heapq
import sys
input = sys.stdin.readline # ๋น ๋ฅธ ์
๋ ฅ
INF = int(1e9) # ๋ฌดํ์ ์๋ฏธํ๋ ๊ฐ์ผ๋ก 10์ต ์ค์
# ๋
ธ๋์ ๊ฐ์, ๊ฐ์ ์ ๊ฐ์๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ
n, m = map(int, input().split())
# ์์ ๋
ธ๋ ๋ฒํธ๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ
start = int(input())
# ์ต๋จ๊ฑฐ๋ฆฌ ํ
์ด๋ธ
distance = [INF]*(n+1)
# ๋
ธ๋ ์ฐ๊ฒฐ์ ๋ณด
graph = [[] for i in range(n+1)]
for _ in range(m):
# a๋ฒ๋
ธ๋์์ b๋ฒ ๋
ธ๋๋ก ๊ฐ๋ ๋น์ฉc
a,b,c = map(int, input().split())
graph[a].append((b,c))
# ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ(์ต์ํ ์ด์ฉ))
def dijkstra(start):
q=[]
# ์์ ๋
ธ๋
heapq.heappush(q, (0,start))
distance[start] = 0
while q:
# ๊ฐ์ฅ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์งง์ ๋
ธ๋์ ๋ํ ์ ๋ณด ๊บผ๋ด๊ธฐ
dist, now = heapq.heappop(q)
# ์ด๋ฏธ ์ฒ๋ฆฌ๋ ๋
ธ๋์๋ค๋ฉด ๋ฌด์
# ๋ณ๋์ visited ํ
์ด๋ธ์ด ํ์์์ด, ์ต๋จ๊ฑฐ๋ฆฌํ
์ด๋ธ์ ์ด์ฉํด ๋ฐฉ๋ฌธ์ฌ๋ถ ํ์ธ
if distance[now] < dist:
continue
# ์ ํ๋ ๋
ธ๋์ ์ธ์ ํ ๋
ธ๋๋ฅผ ํ์ธ
for i in graph[now]:
cost = dist + i[1]
# ์ ํ๋ ๋
ธ๋๋ฅผ ๊ฑฐ์ณ์ ์ด๋ํ๋ ๊ฒ์ด ๋ ๋น ๋ฅธ ๊ฒฝ์ฐ
if cost < distance[i[0]]:
distance[i[0]] = cost
heapq.heappush(q, (cost,i[0]))
# ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ํ
dijkstra(start)
# ๋ชจ๋ ๋
ธ๋๋ก ๊ฐ๊ธฐ ์ํ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ๋ ฅ
for i in range(1, n+1):
# ๋๋ฌํ ์ ์๋ ๊ฒฝ์ฐ
if distance[i] == INF:
print("infinity")
else:
print(distance[i])
๐ก ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์์
Q1. ์ ๋ณด
์ด๋ค ๋๋ผ์๋ N๊ฐ์ ๋์๊ฐ ์๋ค. ๊ฐ ๋์๋ ๋ณด๋ด๊ณ ์ ํ๋ ๋ฉ์์ง๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ค๋ฅธ ๋์๋ก ์ ๋ณด๋ฅผ ๋ณด๋ด์ ๋ค๋ฅธ ๋์๋ก ํด๋น๋ฉ์์ง๋ฅผ ์ ์กํ ์ ์๋ค. ํ์ง๋ง X๋ผ๋ ๋์์์ Y๋ผ๋ ๋์๋ก ์ ๋ณด๋ฅผ ๋ณด๋ด๊ณ ์ ํ๋ค๋ฉด, ๋์ X์์ Y๋ก ํฅํ๋ ํต๋ก๊ฐ ์ค์น๋์ด์์ด์ผํ๋ค. ์๋ฅผ ๋ค์ด X์์ Y๋ก ํฅํ๋ ํต๋ก๋ ์์ง๋ง Y์์ X๋ก ํฅํ๋ ํต๋ก๊ฐ ์๋ค๋ฉด Y๋ X๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์๋ค. ๋ํ ํต๋ก๋ฅผ ๊ฑฐ์ณ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ๋๋ ์ผ์ ํ ์๊ฐ์ด ์์๋๋ค.
์ด๋๋ C๋ผ๋ ๋์์์ ์๊ธ์ํฉ์ด ๋ฐ์ํ๋ค. ์ต๋ํ ๋ง์ ๋์๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์ ํ๋ค. ๋ฉ์์ง๋ ๋์ C์์ ์ถ๋ฐํ์ฌ ๊ฐ ๋์ ์ฌ์ด์ ์ค์น๋ ํต๋ก๋ฅผ ๊ฑฐ์ณ ์ต๋ํ ๋ง์ด ํผ์ ธ๋๊ฐ์ผํ๋ค. ๊ฐ ๋์์ ๋ฒํธ์ ํต๋ก๊ฐ ์ค์น๋์ด์๋ ์ ๋ณด๊ฐ ์ฃผ์ด์ก์๋ ๋์ C์์ ๋ณด๋ธ ๋ฉ์์ง๋ฅผ ๋ฐ๊ฒ๋๋ ๋์์ ๊ฐ์๋ ์ด ๋ช๊ฐ์ด๋ฉฐ, ๋์๋ค์ด ๋ชจ๋ ๋ฉ์์ง๋ฅผ ๋ฐ๋๋ฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ผ๋ง์ธ์ง ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
*์ ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ์ค์ ๋์์ ๊ฐฏ์N, ํต๋ก์ ๊ฐฏ์ M, ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์ ํ๋ ๋์C๊ฐ ์ฃผ์ด์ง๋ค.
(1<=N<=30,000, 1<=M<=200,000, 1<=C<=N)
-๋์งธ์ค๋ถํฐ M+1๋ฒ์งธ ์ค์ ๊ฑธ์ณ์ ํต๋ก์ ๋ํ ์ ๋ณด X,Y,X๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ ํน์ ๋์ X์ ๋ค๋ฅธ ํน์ ๋์ Y๋ก ์ด์ด์ง๋ ํต๋ก๊ฐ ์์ผ๋ฉฐ ๋ฉ์์ง๊ฐ ์ ๋ฌ๋๋ ์๊ฐ์ด Z๋ผ๋ ์๋ฏธ์ด๋ค.
(1=X,Y<=N, 1<=Z<=10,000)
*์ถ๋ ฅ์กฐ๊ฑด
- ์ฒซ์งธ์ค์ ๋์ C์์ ๋ณด๋ธ ๋ฉ์์ง๋ฅผ ๋ฐ๋ ๋์์ ์ด ๊ฐ์์ ์ด ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค.
์ ๋ ฅ ์์ | ์ถ๋ ฅ ์์ |
6 11 1 1 2 2 1 3 5 1 4 1 2 3 3 2 4 2 3 2 3 3 6 5 4 3 3 4 5 1 5 3 1 5 6 2 |
0 2 3 1 2 4 |
[๋ฌธ์ ์์ด๋์ด]
ํ ๋์์์ ๋ค๋ฅธ ๋์๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ ๋ฌธ์ ๋ฅผ ๋ฌป๋ ๋ฌธ์ ์ด๋ค. ์ด๋ N,M์ ๋ฒ์๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ํ์ ์ฌ์ฉํ ๋ค์ต์คํธ๋ผ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด๊ฒฐํด์ผํ๋ค.
[์ฝ๋]
import heapq
import sys
input = sys.stdin.readline # ๋น ๋ฅธ ์
๋ ฅ
INF = int(1e9) # ๋ฌดํ์ ์๋ฏธํ๋ ๊ฐ์ผ๋ก 10์ต ์ค์
# ๋
ธ๋์ ๊ฐ์, ๊ฐ์ ์ ๊ฐ์, ์์๋
ธ๋๋ฅผ ์
๋ ฅ๋ฐ๊ธฐ
n, m, start = map(int, input().split())
# ์ต๋จ๊ฑฐ๋ฆฌ ํ
์ด๋ธ
distance = [INF]*(n+1)
# ๋
ธ๋ ์ฐ๊ฒฐ์ ๋ณด
graph = [[] for i in range(n+1)]
for _ in range(m):
# x๋ฒ๋
ธ๋์์ y๋ฒ ๋
ธ๋๋ก ๊ฐ๋ ๋น์ฉz
x,y,z = map(int, input().split())
graph[x].append((y,z))
# ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ(์ต์ํ ์ด์ฉ))
def dijkstra(start):
q=[]
# ์์ ๋
ธ๋
heapq.heappush(q, (0,start))
distance[start] = 0
while q:
# ๊ฐ์ฅ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ์งง์ ๋
ธ๋์ ๋ํ ์ ๋ณด ๊บผ๋ด๊ธฐ
dist, now = heapq.heappop(q)
# ์ด๋ฏธ ์ฒ๋ฆฌ๋ ๋
ธ๋์๋ค๋ฉด ๋ฌด์
# ๋ณ๋์ visited ํ
์ด๋ธ์ด ํ์์์ด ์ต๋จ๊ฑฐ๋ฆฌํ
์ด๋ธ์ ์ด์ฉํด ๋ฐฉ๋ฌธ์ฌ๋ถ ํ์ธ
if distance[now]<dist:
continue
# ์ ํ๋ ๋
ธ๋์ ์ธ์ ํ ๋
ธ๋๋ฅผ ํ์ธ
for i in graph[now]:
cost = dist + i[1]
# ์ ํ๋ ๋
ธ๋๋ฅผ ๊ฑฐ์ณ์ ์ด๋ํ๋ ๊ฒ์ด ๋ ๋น ๋ฅธ ๊ฒฝ์ฐ
if cost < distance[i[0]]:
distance[i[0]] = cost
heapq.heappush(q, (cost,i[0]))
#๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ํ
dijkstra(start)
count = 0
max_distance = 0
for d in distance:
if d!= INF:
count+=1
max_distance = max(max_distance, d)
## ์์๋
ธ๋๋ ์ ์ธํด์ผํจ์ผ๋ก count-1
print(count-1, max_distance)
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] Disjoint Sets(์๋ก์ ์งํฉ) (0) | 2021.05.31 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ํ๋ก์ด๋ ์์ with Python (0) | 2021.05.23 |
[์๊ณ ๋ฆฌ์ฆ] ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ with Python (0) | 2021.05.23 |
[์๊ณ ๋ฆฌ์ฆ] ์ด์งํ์ with Python (0) | 2021.05.22 |
[์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ with Python (1) | 2021.05.22 |