일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 가상화
- react
- JavaScript
- 프론트엔드
- 컴퓨터공학
- 솔리디티
- TypeScript
- 이더리움
- AWS
- 알고리즘
- kubernetes
- 웹
- k8s
- docker
- 파이썬
- es6
- CSS
- 클라우드
- HTML
- 리액트
- node.js
- 쿠버네티스
- 블록체인
- 백엔드
- next.js
- 이슈
- BFS
- 타입스크립트
- 자바스크립트
- 백준
Archives
- Today
- Total
즐겁게, 코드
BOJ 2606번 - 바이러스 본문
[정답 코드 - Python]
from collections import deque
N = int(input())
T = int(input())
# connection : 컴퓨터 / infected : 감염여부
connection = [0]
infected = [False] * (N + 1)
# 초기 입력
for _ in range(T):
connection.append(list(map(int, input().split())))
def DFS():
s = []
# 언제나 첫 번째 컴퓨터로 감염이 시작되어 초기값을 1로 잡은 모습입니다.
s.append(1)
while s:
next_com = s.pop()
infected[next_com] = True
for i in range(1, T + 1):
# 이 문제의 핵심이 되는 부분으로, 탐색이 무한순환에 빠지지 않기 위해
# 다음번에 탐색할 컴퓨터가 감염되지 않았을 경우에만 스택에 추가합니다.
if connection[i][0] == next_com and infected[connection[i]
[1]] == False:
s.append(connection[i][1])
if connection[i][1] == next_com and infected[connection[i]
[0]] == False:
s.append(connection[i][0])
DFS()
# 1번 컴퓨터를 제외한 감염 컴퓨터의 수를 출력합니다.
print(infected.count(True) - 1)
반응형
'💯 알고리즘 > 백준 온라인 저지' 카테고리의 다른 글
BOJ 1325번 - 효율적인 해킹 (0) | 2021.05.26 |
---|---|
BOJ 2583번 - 영역 구하기 (0) | 2021.04.29 |
BOJ 1051번 - 숫자 정사각형 (0) | 2021.04.24 |
BOJ 1895번 - 필터 (0) | 2021.04.24 |
BOJ 20055번 - 컨베이어 벨트 위의 로봇 (0) | 2021.04.17 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆