๊ฐœ๋ฐœ์ž HOON
๐Ÿ› HOON DEVLog
๊ฐœ๋ฐœ์ž HOON
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ˜Ž ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ (137)
    • ๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„ (7)
    • ๐Ÿฆ” ์ทจ์—…์ค€๋น„ ๊ธฐ๋ก (7)
    • โ˜• ์ž๋ฐ” : JAVA (5)
    • ๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS (80)
    • ๐ŸŒฑ ๋ฐฑ์—”๋“œ : Backend (13)
    • ๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS (11)
    • ๐Ÿ—‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : DB (1)
    • ๐Ÿƒ‍โ™‚๏ธ DEVLOG (8)
    • โš™๏ธ Trouble Shooting (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • GitHub
  • Resume

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๊ฐœ๋ฐœ์ž HOON

๐Ÿ› HOON DEVLog

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ (level3, python)
๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ (level3, python)

2022. 10. 13. 11:17

๐Ÿ ๋ฌธ์ œ ์„ค๋ช…

 

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
    '๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์„ฌ ์—ฐ๊ฒฐํ•˜๊ธฐ (level3, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ค„ ์„œ๋Š” ๋ฐฉ๋ฒ• (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ฐฉ๊ธˆ๊ทธ๊ณก (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ–‰๋ ฌ ํ…Œ๋‘๋ฆฌ ํšŒ์ „ (level2, python)
    ๊ฐœ๋ฐœ์ž HOON
    ๊ฐœ๋ฐœ์ž HOON
    ์ข‹์€ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก์„ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค. # ์ฃผ๋‹ˆ์–ด # ๋ฐฑ์—”๋“œ # ๊ฐœ๋ฐœ์ž

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”