<프로그래머스 문제풀이>

해답)
def solution(n, computers):
check = [1] * n
network = 0
def find(Coms, Com, Com_index):
check[Com_index] = 0
for objCom_i,obj_com in enumerate(Com):
if obj_com:
if check[objCom_i]:
find(Coms, Coms[objCom_i], objCom_i)
for index, com in enumerate(computers):
if check[index]:
find(computers, com,index)
network += 1
return network
풀이)
* check = 컴퓨터가 네트워크에 포함되었는지 여부를 반환합니다. (1: 아직안됨 0: 연결됨)
1. 한 컴퓨터에서 연결되는 모든 컴퓨터를 찾아 check 해주는 find 함수를 만듭니다.
2. 본 함수에서는 아직 체킹되지 않은 컴퓨터들의 네트워크를 체크해주는 의미에서 find 함수를 실행합니다.
예를들어, (A,C,E) / (B,D) 이렇게 연결되어있는 네트워크라면,
for 문의 첫번째 루프:
A find 함수 한번 실행 => A->C->E check = [0,1,0,1,0]
두번째 실행 B->D check = [0,0,0,0,0]
(check 에서 1이 아직 네트워크에 포함여부 체크가 안된겁니다.)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
728x90
'문제풀이 > Programmers' 카테고리의 다른 글
[프로그래머스💯] 코딩테스트 연습 > 힙(HEAP) > 이중우선순위큐 (0) | 2020.01.26 |
---|---|
[프로그래머스💯] 코딩테스트 연습 > 완전탐색 > 카펫 (0) | 2020.01.25 |
[프로그래머스💯] 코딩테스트 연습 > 탐욕법(Greedy) > 구명보트 (0) | 2020.01.12 |
[프로그래머스💯] 코딩테스트 연습 > 스택/큐 > 주식가격 / *스택 활용 (0) | 2020.01.11 |
[프로그래머스💯] 코딩테스트 연습 > 스택/큐 > 탐욕법 (0) | 2019.12.29 |
댓글