๐ ๋ฌธ์ ์ค๋ช
n๊ฐ์ ๋ ธ๋๊ฐ ์๋ ๊ทธ๋ํ๊ฐ ์์ต๋๋ค. ๊ฐ ๋ ธ๋๋ 1๋ถํฐ n๊น์ง ๋ฒํธ๊ฐ ์ ํ์์ต๋๋ค. 1๋ฒ ๋ ธ๋์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ ์ต๋จ๊ฒฝ๋ก๋ก ์ด๋ํ์ ๋ ๊ฐ์ ์ ๊ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ๋ ธ๋๋ค์ ์๋ฏธํฉ๋๋ค.
๋ ธ๋์ ๊ฐ์ n, ๊ฐ์ ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด vertex๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, 1๋ฒ ๋ ธ๋๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๊ฐ ๋ช ๊ฐ์ธ์ง๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ ธ๋์ ๊ฐ์ n์ 2 ์ด์ 20,000 ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ฉฐ ์ด 1๊ฐ ์ด์ 50,000๊ฐ ์ดํ์ ๊ฐ์ ์ด ์์ต๋๋ค.
- vertex ๋ฐฐ์ด ๊ฐ ํ [a, b]๋ a๋ฒ ๋ ธ๋์ b๋ฒ ๋ ธ๋ ์ฌ์ด์ ๊ฐ์ ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค.
์ ์ถ๋ ฅ ์
6 | [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] | 3 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ ์ ๊ทธ๋ํ๋ฅผ ํํํ๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๊ณ , 1๋ฒ ๋ ธ๋์์ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋๋ 4,5,6๋ฒ ๋ ธ๋์ ๋๋ค.
๐ ํ์ด ์ฝ๋
import heapq
def dijkstra(start, distance, graph):
q = []
heapq.heappush(q, (0, start))
distance[start] = 0
while q:
dist, now = heapq.heappop(q)
if distance[now] < dist:
continue
for i in graph[now]:
cost = dist + 1
if cost < distance[i]:
distance[i] = cost
heapq.heappush(q, (cost, i))
def solution(n, edge):
answer = 0
INF = int(1e9)
graph = [[] * (n+1) for _ in range(n+1)]
distance = [INF] * (n+1)
for e in edge:
a, b = e
graph[a].append(b)
graph[b].append(a)
dijkstra(1, distance, graph)
return distance.count(max(distance[1:]))
๊ฐ์ ์ ๋น์ฉ์ด ๋ชจ๋ 1์ธ ๋ค์ต์คํธ๋ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๋ค์ต์คํธ๋ผ๋ฅผ ๊ตฌํํ ๋, ๋ค์๊ณผ ๊ฐ์ ๊ตฌํ์ด ํ์ํ๋ค.
1) ์ธ์ ๋ฆฌ์คํธ ํํ์ 2์ฐจ์ ๋ฐฐ์ด (graph)
2) ์ต๋ ๊ฐ์ผ๋ก ์ด๊ธฐํ ๋ distance ๋ฐฐ์ด (๊ฐ ๋ ธ๋๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ ์์ )
3) ๋ค์ต์คํธ๋ผ ๊ตฌํ์ ์ํ ํ์ (cost์ ํ์ฌ ์์น) ํํ์ ๋ฃ๊ณ ํ์ ๋ํ while๋ฌธ ๋ฐ๋ณต
4) ์ต์ํ์์ ๊ฐ์ฅ ๋น์ฉ์ด ๋ฎ์ ์์๋ฅผ ๋ฝ๊ณ , ๋ฝ์ ์์์ ๊ฑฐ๋ฆฌ๊ฐ ์ ์ฅ๋ ์ต๋จ๊ฑฐ๋ฆฌ๋ณด๋ค ๊ธธ๋ฉด ๋ฌด์ํ๊ณ ๋์ด๊ฐ (continue)
5) ๊ทธ๊ฒ ์๋๋ผ๋ฉด, ํ์ฌ ์์น์์ ์ธ์ ๋ ธ๋๋ค์ ๋ํด cost ๊ณ์ฐ. ์ด ๋ฌธ์ ์์๋ ๊ฐ์ ๋น์ฉ์ด ๋ชจ๋ 1์ด๋ฏ๋ก cost = dist + 1.
6) ์ธ์ ๋ ธ๋์ ๋น์ฉ์ด ์ ์ฅ๋ ๊ฒ๋ณด๋ค ์๋ก ๊ณ์ฐ๋ ๊ฒ์ด ๋ ์์ผ๋ฉด (๋ ์งง์ ๊ฑฐ๋ฆฌ๊ฐ ๋ ์ ์๋ค๋ฉด) distance ๋ฐฐ์ด์ ์ ์ฅํ๊ณ ํด๋น ์์น์ ๋น์ฉ์ ํ์ ๋ฃ๋๋ค. (์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ฐฑ์ ๋์์ผ๋ฏ๋ก ๋ค๋ฅธ ์ธ์ ๋ ธ๋์ ์ํฅ์ ๋ฏธ์น ์ ์๊ธฐ ๋๋ฌธ์)
7) ํ์ด ๋ค ๋น์์ง ๋๊น์ง ๋ฐ๋ณต.
๊ฐ์ ๋น์ฉ์ด ์๋ ๋ค์ต์คํธ๋ผ์ ๊ฒฝ์ฐ, ์ธ์ ๋ฆฌ์คํธ์ ์ธ์ ๋ ธ๋๋ง ์ ์ฅํ์ง ์๊ณ , (์ธ์ ๋ ธ๋, ๋น์ฉ) ํ์์ผ๋ก ์ ์ฅํด์ ๋ค์ต์คํธ๋ผ ๋ก์ง์์ 1์ i[1], i๋ฅผ i[0]๊ณผ ๊ฐ์ด ๋ฐ๊ฟ์ ๋ฃ์ผ๋ฉด ๋์ผํ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
๋ฐฑ์ค์์ ํ๋ก๊ทธ๋๋จธ์ค๋ก ๋์ด์จ ์ง ์ผ๋ง ์ ๋๋๋ฐ ๋ฒ์จ ๋ค์ต์คํธ๋ผ๋ฅผ ๋ง๋๋ค๋ ๋ฟ๋ฏ-
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌ ์ฐ๊ฒฐํ๊ธฐ (level3, python) (1) | 2022.10.13 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ค ์๋ ๋ฐฉ๋ฒ (level2, python) (1) | 2022.10.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๊ธ๊ทธ๊ณก (level2, python) (1) | 2022.10.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ ฌ ํ ๋๋ฆฌ ํ์ (level2, python) (0) | 2022.10.13 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ดํธ ๋ณํ (level2, python) (0) | 2022.10.11 |