정리용

[백준 2606] 파이썬 - 바이러스 ( 딕셔너리 활용 ) 본문

카테고리 없음

[백준 2606] 파이썬 - 바이러스 ( 딕셔너리 활용 )

무룡룡 2021. 12. 16. 17:14

1. 코드 설명

### 컴퓨터 수 
n = int(input())

### 딕셔너리 key 값 만들기
dic = {}
for i in range(1,n+1):
  dic[i] = []                      

### 딕셔너리 key, values 값 채우기
for i in range(int(input())):
  a,b = map(int,input().split())
  dic[a].append(b)
  dic[b].append(a)
  #print(dic)    #### dic 이 입력되는 과정


### 큐 생성 및 초항 설정
from collections import deque
q = deque([1])

### 감염 전파 리스트
visited = [0]*(n+1)
visited[1]=1

cnt=0

### 큐 반복
while q :
    pop = q.popleft()
    #print('======')
    #print('dic의 key = ',pop)
    for i in dic[pop]:
        if (visited[i]==0): ## 전파 리스트에 dic의 values가 없으면
            visited[i]=1 ## 전파 리스트 설정
            cnt+=1 
            q.append(i) ## key 의 values를 큐에 추가
            #print(visited)


print(cnt)



 

 

dic 이 입력되는 과정 1

 

 

 

visted가 입력 되는 과정

 

 

 

 

2. 주의사항

 

 

dic = {1: [25], 2: [135], 3: [2], 4: [7], 5: [126], 6: [5], 7: [4]}
for i in dic[5] :
  print(i)
 
>>> 1
>>> 2
>>> 6

딕셔너리에 대한 for 문을 작성하면 values가 출력이 된다

 

 

 

 

 

또한 이번엔 순서 중요한 문제가 아니므로 

 

굳이 deque의 popleft 를 쓰지않고 pop 을 써도 문제 해결이 가능하다.

Comments