https://www.acmicpc.net/problem/14502 import sysfrom itertools import combinationsfrom collections import dequeimport copyinput = sys.stdin.readline# 바이러스 전이def spread_virus(lab): q = deque() for i in range(N): for j in range(M): if lab[i][j] == 2: q.append((i, j)) while q: x, y = q.popleft() for dx, dy in [(-1,0), (1,0), (0,-1), (0,1)]..
https://www.acmicpc.net/problem/1058 import sysfrom collections import dequeinput = sys.stdin.readlineN = int(input())person = list()for _ in range(N): person.append(input())max_count = 0 # 각 사람의 친구와 2-친구의 수 구하기for i in range(N) : # BFS를 통해 이어진 친구 구하기 (2-친구) visited = [0] * N # 각 친구와의 거리 (1은 친구, 2부터는 2-친구) dist = [-1] * N dq = deque() dq.append(i) visited[i] = 1 # 본인과..
https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr from collections import dequedef bfs(maps): # 방향 벡터: 상, 하, 좌, 우 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] n, m = len(maps), len(maps[0]) visited = [[0] * m for _ in range(n)] # 큐 초기화 및 시작점 방문 queue = deque() queue.append((0, 0, 1))..
https://www.acmicpc.net/problem/1260 from collections import deque# DFSdef dfs(now): for nxt in range(N): if (li[now][nxt] or li[nxt][now]) and nxt+1 not in dfs_li: dfs_li.append(nxt+1) dfs(nxt)# BFSdef bfs(): dq = deque() dq.append(V-1) bfs_li.append(V) while dq: now = dq.popleft() for nxt in range(N): if (li[now][nxt] or li[n..