Hiya_
๊ฐœ๋ฐœ์ž์ทจ๐ŸŒฑ
Hiya_
Github
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (155) N
    • ๐Ÿ’ปBackend (1) N
      • ๋ผ์ด์ง•์บ ํ”„ (6)
      • SSAFY | ์‹ธํ”ผ (2)
      • ์‹ ํ•œDS ๊ธˆ์œตSW ์•„์นด๋ฐ๋ฏธ (2)
    • ๐Ÿ“๋ฌธ์ œ ํ’€์ด (102)
      • ๐ŸงฉBaekjoon (47)
      • ๐ŸงฉProgrammers (42)
      • ๐ŸงฉSWExpertAcademy (10)
      • ๐ŸงฉSofteer (3)
    • ๐Ÿ“‚Language (31)
      • Python (3)
      • JAVA (2)
      • SQL (6)
      • English (19)
    • โœจUseful information (5)
    • ๐Ÿ”‘Algorithms (3)
    • ๐Ÿ™Git (2)

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

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํ† ์ต๊ธฐ์ถœ
  • ๋‹ค์ต์ŠคํŠธ๋ผ
  • UNION ALL
  • ํ† ์ต๋…ํ•™
  • ํ† ์ต๋ฌด๋ฃŒ๊ฐ•์˜
  • BaekJoon
  • ํ•ด์ปค์Šคํ† ์ต
  • mysql
  • ๋ฆฌ์ŠคํŠธ
  • ํ† ์ตRC
  • ํ† ์ต๊ณต๋ถ€
  • ์˜ค๋ธ”์™„
  • ํ•ด์ปค์ŠคํŒŒ๋žญ์ด
  • ์ •๋ ฌ
  • Union
  • 2์ฐจ์› ๋ฐฐ์—ด
  • sort
  • ๋‚ด์žฅํ•จ์ˆ˜
  • ๊ทธ๋ฆฌ๋””
  • ํ† ์ต์ ์ˆ˜
  • ํ† ์ต์‹œํ—˜
  • ๋ฐฑ์ค€
  • ์™„์ „ํƒ์ƒ‰
  • BFS
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ํ† ์ต๋ฌด๋ฃŒ์ž๋ฃŒ
  • greedy algorithm
  • ๊ตฌํ˜„
  • Python
  • ์ฝ”ํ…Œ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ


Owner : ๊น€์‹ ์˜
Naver Blog

hELLO ยท Designed By ์ •์ƒ์šฐ.
Hiya_

๊ฐœ๋ฐœ์ž์ทจ๐ŸŒฑ

๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉProgrammers

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ | BFS | ๋‹ค์ต์ŠคํŠธ๋ผ

2023. 5. 16. 22:12

 

~๋ชฉ์ฐจ~

๋ฌธ์ œ

๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ

์ž‘์„ฑ ์ฝ”๋“œ


 

๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/49189

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ

- BFS์™€ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‘ ๊ฐ€์ง€ ํ’€์ด ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ (DFS๋„ ๊ฐ€๋Šฅํ•˜๋‚˜ python์€ DFS ํšจ์œจ์ด ์ข‹์ง€ ๋ชป ํ•จ)

 

์ž์„ธํ•œ ์„ค๋ช…์€ ์ฃผ์„ ์ฐธ๊ณ 

 

 

์ž‘์„ฑ ์ฝ”๋“œ

BFS ํ’€์ด

from collections import deque
def solution(n, edge):
    que = deque()  # BFS๋ฅผ ์œ„ํ•œ ํ
    graph = [[] for _ in range(n + 1)]  # ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ
    visited = [0] * (n + 1)  # ๋ฐฉ๋ฌธ ํ‘œ์‹œ & ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅ
    for v1, v2 in edge:
        graph[v1].append(v2)
        graph[v2].append(v1)

    que.append((1, 0))  # 1๋ฒˆ ๋…ธ๋“œ, ๊ฑฐ๋ฆฌ 0
    visited[1] = -1  # 1๋ฒˆ ๋…ธ๋“œ ๋ฐฉ๋ฌธ ํ‘œ์‹œ
    
    while que:  # BFS
        q = que.popleft()
        for v in graph[q[0]]:
            if not visited[v]:  # v๋…ธ๋“œ์— ๋ฐฉ๋ฌธํ•œ ์ ์ด ์—†๋‹ค๋ฉด(๊ธฐ๋ก๋œ ์ ์ด ์—†๋‹ค๋ฉด)
                visited[v] = q[1] + 1  # ๊ฑฐ๋ฆฌ + 1
                que.append((v, q[1] + 1))
                
    return visited.count(max(visited))

 

๋‹ค์ต์ŠคํŠธ๋ผ ํ’€์ด

import heapq  # ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์œ„ํ•œ ํž™
INF = int(1e9)  # ๋ฌดํ•œ์ˆ˜

def solution(n, edge):
    graph = [[] for _ in range(n+1)]  # ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
    distance = [INF]*(n+1)  # ํŠน์ • ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ์˜ ์ตœ์†Œ ๊ฑฐ๋ฆฌ ์ดˆ๊ธฐํ™”

    for v1, v2 in edge:  # ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”
        graph[v1].append(v2)
        graph[v2].append(v1)
        
    def dijkstra(start):  # ๋‹ค์ต์ŠคํŠธ๋ผ ํ•จ์ˆ˜
        distance[start] = 0  # ์‹œ์ž‘ ๋…ธ๋“œ ๊ฑฐ๋ฆฌ 0
        q = [] 
        heapq.heappush(q, (0, start))  # ์šฐ์„ ์ˆœ์œ„ ํ ์ดˆ๊ธฐํ™”

        while q:  # ํ์— ๊ฐ’์ด ์žˆ์„ ๋™์•ˆ
            dist, now = heapq.heappop(q)
            if distance[now] < dist:  # ๋ฐฉ๋ฌธํ–ˆ๋˜ ๋…ธ๋“œ๋ผ๋ฉด
                continue
            for i in graph[now]:  # ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ ๋…ธ๋“œ ๋ฐฉ๋ฌธ
                cost = dist + 1  # ๋ชจ๋“  ๊ฐ„์„  ๊ธธ์ด๋Š” 1
                if distance[i] > cost:  # ๊ณ„์‚ฐํ•œ ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์งง๋‹ค๋ฉด
                    distance[i] = cost  # ๊ฑฐ๋ฆฌ ์—…๋ฐ์ดํŠธ
                    heapq.heappush(q, (cost, i))  # ์šฐ์„ ์ˆœ์œ„ ํ ์‚ฝ์ž…

    dijkstra(1)  # 1 ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ
    return distance.count(max(distance[1:]))

 

 

 

๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์ข‹์•„์š” ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”๐Ÿ’š

 

 

'๐Ÿ“๋ฌธ์ œ ํ’€์ด > ๐ŸงฉProgrammers' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ž์—ด ์••์ถ• | 2020 KAKAO BLIND RECRUITMENT  (0) 2023.05.20
[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌด์ง€์˜ ๋จน๋ฐฉ ๋ผ์ด๋ธŒ | Heap(ํž™) | 2019 KAKAO BLIND RECRUITMENT  (0) 2023.05.20
[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค N์œผ๋กœ ํ‘œํ˜„ | DP  (0) 2023.05.15
[JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ | HashMap | HashSet  (0) 2023.05.06
[JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์†Œ์ˆ˜ ์ฐพ๊ธฐ | ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์ฒด | ๊ณจ๋“ ๋ฐ”ํ์˜ ์ถ”์ธก  (0) 2023.05.06
    '๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉProgrammers' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ž์—ด ์••์ถ• | 2020 KAKAO BLIND RECRUITMENT
    • [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌด์ง€์˜ ๋จน๋ฐฉ ๋ผ์ด๋ธŒ | Heap(ํž™) | 2019 KAKAO BLIND RECRUITMENT
    • [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค N์œผ๋กœ ํ‘œํ˜„ | DP
    • [JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ | HashMap | HashSet
    Hiya_
    Hiya_
    ํ•˜์–€ ์ฒœ๊ณผ ๋ฐ”๋žŒ๋งŒ ์žˆ๋‹ค๋ฉด ์–ด๋””๋“  ๊ฐˆ ์ˆ˜ ์žˆ์–ด

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