๐Ÿ’ป์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œํ’€์ด 26

์ง€๋ฏผ์„œยท2023๋…„ 3์›” 16์ผ
0

coding test

๋ชฉ๋ก ๋ณด๊ธฐ
25/30

Chapter12. ๊ตฌํ˜„

[๋ฌธ์ œ58] ๋„คํŠธ์›Œํฌ - Level3

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

์ปดํ“จํ„ฐ์˜ ๊ฐœ์ˆ˜ n, ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด computers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋„คํŠธ์›Œํฌ์˜ ๊ฐœ์ˆ˜๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”.

[์ œํ•œ์‚ฌํ•ญ]

  • ์ปดํ“จํ„ฐ์˜ ๊ฐœ์ˆ˜ n์€ 1 ์ด์ƒ 200 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜
  • ๊ฐ ์ปดํ“จํ„ฐ๋Š” 0๋ถ€ํ„ฐ n - 1์ธ ์ •์ˆ˜๋กœ ํ‘œํ˜„
  • i๋ฒˆ ์ปดํ“จํ„ฐ์™€ j๋ฒˆ ์ปดํ“จํ„ฐ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด computers(i)(j)๋ฅผ 1๋กœ ํ‘œํ˜„
  • computer(i)(i)๋Š” ํ•ญ์ƒ 1

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

1. ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•  ์ค€๋น„

def solution(n, computers):
	visited = [0] * n
    answer = 0
    
    for i in range(n):
    	if visited[i] == 0:
        	<DFS ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐˆ ์œ„์น˜>
            answer += 1
            
    return answer

2. DFS ํ•จ์ˆ˜ ๊ตฌํ˜„

def dfs(k, graph, visited):
	visited[k] = 1
    for i in range(len(graph[k])):
    	if visited[i] == 0 and graph[k][i] and graph[k][i] == 1:
        	dfs(i, graph, visited)

[์ „์ฒด์ฝ”๋“œ]

def dfs(k, graph, visited):
	visited[k] = 1
    for i in range(len(graph[k])):
    	if visited[i] == 0 and graph[k][i] and graph[k][i] == 1:
        	dfs(i, graph, visited)
            
def solution(n, computers):
	visited = [0] * n
    answer = 0
    
    for i in range(n):
    	if visited[i] == 0:
        	dfs(i, graph, visited)
            answer += 1
            
    return answer  
profile
๐Ÿ’ป + ๐ŸŽฅ

0๊ฐœ์˜ ๋Œ“๊ธ€