ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋„คํŠธ์›Œํฌ

๋„คํŠธ์›Œํฌ๋ž€ ์ปดํ“จํ„ฐ ์ƒํ˜ธ ๊ฐ„์— ์ •๋ณด๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํ“จํ„ฐ A์™€ ์ปดํ“จํ„ฐ B๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ณ , ์ปดํ“จํ„ฐ B์™€ ์ปดํ“จํ„ฐ C๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๏ฟฝ๏ฟฝ

programmers.co.kr

 

๋ฌธ์ œ ํ’€์ด

 ๋„คํŠธ์›Œํฌ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ํ†ตํ•ด ๋ช‡ ๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. BFS๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ’€ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ์ œ #1

  • ๋…ธ๋“œ 1์€ 2๋ฒˆ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
  • ๋…ธ๋“œ 2๋Š” 1๋ฒˆ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
  • ๋…ธ๋“œ 3์€ ๋‹ค๋ฅธ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์ˆ˜๋Š” 2์ด๋‹ค.

์˜ˆ์ œ #2

  •  ๋…ธ๋“œ 1, 2, 3์€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋„คํŠธ์›Œํฌ ๊ฐœ์ˆ˜๋Š” 1์ด๋‹ค.

 ์ด์™€ ๊ฐ™์€ ์—ฐ๊ฒฐ์— ๋”ฐ๋ผ ๋„คํŠธ์›Œํฌ ๊ฐœ์ˆ˜๋ฅผ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๊ฐ ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์œผ๋กœ ํ•˜์—ฌ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ณ  `visited`๋ฅผ ์ฒดํฌํ•˜์—ฌ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐฉ๋ฌธ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค. ํ•ด๋‹น ๋ฐฉ์‹์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ฒŒ ๋˜๋ฉด, `์˜ˆ์ œ #1`์˜ ๊ฒฝ์šฐ ๋…ธ๋“œ 1, ๋…ธ๋“œ 2๋ฅผ ์‹œ์ž‘์œผ๋กœ ํƒ์ƒ‰ํ•  ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ํƒ์ƒ‰์ด๊ธฐ์— ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 1 ์ถ”๊ฐ€๋˜๊ณ , ๋…ธ๋“œ 3์„ ์‹œ์ž‘์œผ๋กœ ํƒ์ƒ‰ํ•  ๊ฒฝ์šฐ์— ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ด 2๊ฐœ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ

from collections import deque


def bfs(computers, visited, start):
    q = deque()
    q.append(start)
    while q:
        node = q.popleft()
        if not visited[node]:
            visited[node] = 1

        for connect_node in range(len(computers)):
            if not visited[connect_node] and computers[node][connect_node]:
                q.append(connect_node)


def solution(n, computers):
    answer = 0
    visited = [0] * n
    while not all(visited):
        for node in range(n):
            if not visited[node]:
                bfs(computers, visited, node)
                answer += 1
    return answer

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€