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

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

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ


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

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

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

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

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋„คํŠธ์›Œํฌ | BFS/DFS

2023. 4. 19. 12:59

 

~๋ชฉ์ฐจ~

๋ฌธ์ œ

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

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


 

๋ฌธ์ œ

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

 

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

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

programmers.co.kr

 

 

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

๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— DFS/BFS ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Python์€ DFS ํšจ์œจ์ด ์ข‹์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— BFS๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

BFS

- ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ BFS๋ฅผ ๋Œ๊ณ  ๋‚œ ๋’ค ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ์ฐพ์•„์•ผ ํ•จ

- ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•œ๋‹ค๋ฉด queue์— ์‚ฝ์ž…ํ•˜์—ฌ BFS๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•ด๋‹น ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ์— ๋Œ€ํ•ด ์ „๋ถ€ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ(visited)

- ๊ฐ ๋…ธ๋“œ ๋ณ„ computers ๋ฆฌ์ŠคํŠธ ๊ฐ’์—์„œ ๋ณธ์ธ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด์„œ(1์ด๋ฉด์„œ) ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€(visited๊ฐ€ False) ๋…ธ๋“œ(i)๋ฅผ ์‚ฝ์ž…

- ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ๋„คํŠธ์›Œํฌ๋ฅผ ํ•˜๋‚˜ ๋๋‚ธ๊ฒƒ์ด๋‹ค. 

 

DFS

- ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋Š” set ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๊ด€๋ฆฌ

- ํฐ ํ‹€์—์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ™•์ธ ( ๋„คํŠธ์›Œํฌ )

- ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๊ตฌํ˜„ํ•จ์œผ๋กœ visited ์ ‘๊ทผ ๊ฐ€๋Šฅ

- DFS๋ฅผ ๋๋‚ด๊ณ  ๋Œ์•„์™”๋‹ค = ๋„คํŠธ์›Œํฌ ํ•˜๋‚˜ ๋Œ๊ณ  ์™”๋‹ค

 

 

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

BFS

from collections import deque


def solution(n, computers):
    que = deque()
    visited = [False] * n
    count = 0

    for vertex in range(n):
        if not visited[vertex]:  # ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์‹œ์ž‘ ๋…ธ๋“œ
            # BFS
            que.append(vertex)
            while que:  # queue์— ๊ฐ’์ด ์žˆ๋Š” ๋™์•ˆ
                q = que.popleft()
                visited[q] = True  # ๋ฐฉ๋ฌธ ํ‘œ์‹œ
                for i, v in enumerate(computers[q]):  # ๋งŒ์•ฝ computer[q][i] = 1์ด๋ผ๋ฉด ์—ฐ๊ฒฐ๋จ
                    if not visited[i] and v:  # ์—ฐ๊ฒฐ๋œ node๊ฐ€ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด
                        que.append(i)
            count += 1  # ํ•œ ๋„คํŠธ์›Œํฌ ์™„๋ฃŒ
    return count


print(solution(3,	[[1, 1, 0], [1, 1, 0], [0, 0, 1]]))  # 1
print(solution(3,	[[1, 1, 0], [1, 1, 1], [0, 1, 1]]))  # 2

 

DFS

def solution(n, computers):
    visited = set()
    answer = 0

    def dfs(computer):
        for i, c in enumerate(computers[computer]):
            if i not in visited and c:
                visited.add(i)
                dfs(i)

    for c in range(len(computers )):
        if c not in visited:
            visited.add(c)
            dfs(c)
            answer += 1

    return answer

 

 

 

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

 

 

 

 

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

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค H-Index  (0) 2023.04.22
[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ | ํšจ์œจ์„ฑ  (2) 2023.04.21
[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ€๊ฒŸ ๋„˜๋ฒ„ | DFS/BFS  (0) 2023.04.19
[Programmers] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ | Level 1  (0) 2023.03.29
[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ€๊ฒŸ ๋„˜๋ฒ„ | ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)  (0) 2023.03.02
    '๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉProgrammers' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค H-Index
    • [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฒŒ์ž„ ๋งต ์ตœ๋‹จ๊ฑฐ๋ฆฌ | ํšจ์œจ์„ฑ
    • [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ€๊ฒŸ ๋„˜๋ฒ„ | DFS/BFS
    • [Programmers] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ด์ƒํ•œ ๋ฌธ์ž ๋งŒ๋“ค๊ธฐ | Level 1
    Hiya_
    Hiya_
    ํ•˜์–€ ์ฒœ๊ณผ ๋ฐ”๋žŒ๋งŒ ์žˆ๋‹ค๋ฉด ์–ด๋””๋“  ๊ฐˆ ์ˆ˜ ์žˆ์–ด

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