| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ์ปจํ ์ด๋๊ฐ์ฒด
- latent factor model
- DROPTABLE
- ALTERTABLE
- SQL
- SQLDDL
- CREATETABLE
- ๋ฌด๊ฒฐ์ฑ์ ์ง
- ์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ฌ
- Python
- ๋ฌด๊ฒฐ์ฑ
- ํ
- ์ฃผ์ฑ๋ถ ์ฐพ๊ธฐ
- TDD
- ํด๋ฆฐ์ฝ๋
- ์ฌ์ดํท๋ฐ
- RENAMETABLE
- latent factor
- sklearn
- ๋ฌด๊ฒฐ์ฑ์ ์ง๋ฉ์ปค๋์ฆ
- knn_classify
- ๋ฐฑ์ค
- ์ธ๋๋ณ๊ฐ๋น์ง์ปฌ๋ ํฐ
- ํค ์ข ๋ฅ
- Key ์ข ๋ฅ
- Hyperlink Graphs
- ๋ฌธ์์ด
- ์ ์ฌ์์๋ชจ๋ธ
- ๋ถ๊ฝ๋ฐ์ดํฐ์
- Today
- Total
DonHurry
[Python] ๋ฐฑ์ค 1774๋ฒ - ์ฐ์ฃผ์ ๊ณผ์ ๊ต๊ฐ ๋ณธ๋ฌธ
๐ ๋ฌธ์
1774๋ฒ: ์ฐ์ฃผ์ ๊ณผ์ ๊ต๊ฐ
(1,1) (3,1) (2,3) (4,3) ์ด๋ ๊ฒ ์ฐ์ฃผ์ ๋ค๊ณผ ํฉ์ ์์จ์ ์ขํ๊ฐ ์ฃผ์ด์ก๊ณ 1๋ฒํ๊ณ 4๋ฒ์ด ์ฐ๊ฒฐ๋์ด ์๋ค. ๊ทธ๋ ๋ค๋ฉด 1๋ฒํ๊ณ 2๋ฒ์ ์๋ ํต๋ก๋ฅผ ๋ง๋ค๊ณ 3๋ฒํ๊ณ 4๋ฒ์ ์๋ ํต๋ก๋ฅผ ๋ง๋ค๋ฉด ์ ๋ค๊ณผ ์ ์์จ๋ผ
www.acmicpc.net
๐ ํ์ด
์ ๋์จ ํ์ธ๋๋ฅผ ํ์ฉํ๋ ์ต์ ์ ์ฅ ํธ๋ฆฌ ๋ฌธ์ ์ ๋๋ค. ๋ฐฑ์ค 4386๋ฒ ๋ณ์๋ฆฌ ๋ง๋ค๊ธฐ ๋ฌธ์ ์ ๋น์ทํฉ๋๋ค. ๋ค๋ฅธ ์ ์ ์ด๋ฏธ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฐ์ ์ด ์กด์ฌํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ฏธ ์ฐ๊ฒฐ๋ ํต๋ก๋ค์ ๊ธธ์ด ํฉ์ ๋ฃ์ด์ค ํ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํ๊ธฐ ์ ์, ์ฐ๊ฒฐ๋ ํต๋ก๋ค์ root๋ฅผ ํตํฉํ์ฌ ์ค๋๋ค. root๋ฅผ ํตํฉํ๊ธฐ ์ํด์๋ ๋ฏธ๋ฆฌ ๊ตฌํํ union ํจ์๋ฅผ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.
์๋ ์ฝ๋์์๋ ์ฐ์ฃผ์ ์ด 1๋ฒ์ด ์๋ 0๋ฒ๋ถํฐ ์๋ค๊ณ ๊ฐ์ ํ์์ต๋๋ค.
๐ป ์ฝ๋
import sys
input = sys.stdin.readline
# root๋ฅผ ์ฐพ๋ ํจ์
def find_parents(x):
if parents[x] == x:
return x
return find_parents(parents[x])
# root๋ฅผ ํตํฉํ๋ ํจ์
def union_parents(a, b):
a = find_parents(a)
b = find_parents(b)
if a < b:
parents[b] = a
else:
parents[a] = b
# ๋ ์ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ ํจ์
def cal_dist(x1, y1, x2, y2):
return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
N, M = map(int, input().split())
parents = [int(x) for x in range(N)]
graph = []
for _ in range(N):
x, y = map(int, input().split())
graph.append((x, y))
# ์ด๋ฏธ ์ฐ๊ฒฐ๋ ํต๋ก๋ค์ root ํฉ์น๊ธฐ
for _ in range(M):
a, b = map(int, input().split())
union_parents(a-1, b-1)
ans = 0
dist = []
for i in range(N):
for j in range(i+1, N):
# ํต๋ก ๊ฑฐ๋ฆฌ ๊ณ์ฐ
cost = cal_dist(graph[i][0], graph[i][1], graph[j][0], graph[j][1])
dist.append((cost, i, j))
# ์ต์ ๊ฑฐ๋ฆฌ ์์ผ๋ก ๋์ด
dist.sort()
for k, i, j in dist:
# ๋ ๋ณ์ root๊ฐ ๊ฐ์ง ์๋ค๋ฉด ๊ฑฐ๋ฆฌ๋น์ฉ ์ถ๊ฐํ๊ณ root ํฉ์น๊ธฐ
if find_parents(i) != find_parents(j):
union_parents(i, j)
ans += k
print(f'{ans:.2f}')'Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Python] ๋ฐฑ์ค 11279๋ฒ - ์ต๋ ํ (0) | 2022.11.19 |
|---|---|
| [Python] ๋ฐฑ์ค 2164๋ฒ - ์นด๋2 (0) | 2022.11.18 |
| [Python] ๋ฐฑ์ค 4386๋ฒ - ๋ณ์๋ฆฌ ๋ง๋ค๊ธฐ (0) | 2022.11.15 |
| [Python] ๋ฐฑ์ค 21921๋ฒ - ๋ธ๋ก๊ทธ (0) | 2022.11.14 |
| [Python] ๋ฐฑ์ค 1100๋ฒ - ํ์ ์นธ (0) | 2022.11.13 |