Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 구현
- 코사인유사도
- 그래프탐색
- 우선순위큐
- 깊이우선탐색
- TF-IDF
- 자연어처리
- 공공데이터
- 유클리드
- xmltodict
- Geocoding
- 백준
- 그리디
- 재귀
- 그래프이론
- 분할정복
- 유사도
- 비트마스킹
- 전처리
- GroupBy
- 지진대피소
- dp
- 너비우선탐색
- geopy
- 누적합
- pandas
- NLP
- 수학
- cosine
- 건축물대장정보
Archives
- Today
- Total
정리용
[백준 2606] 파이썬 - 바이러스 ( 딕셔너리 활용 ) 본문
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)
2. 주의사항
dic = {1: [2, 5], 2: [1, 3, 5], 3: [2], 4: [7], 5: [1, 2, 6], 6: [5], 7: [4]}
for i in dic[5] :
print(i)
>>> 1
>>> 2
>>> 6
딕셔너리에 대한 for 문을 작성하면 values가 출력이 된다
또한 이번엔 순서 중요한 문제가 아니므로
굳이 deque의 popleft 를 쓰지않고 pop 을 써도 문제 해결이 가능하다.
Comments