BFS 7

백준 14502번 연구소 파이썬 BFS

https://www.acmicpc.net/problem/14502 14502번: 연구소인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크www.acmicpc.net 내 답안import sys import copy from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) lab = [list(map(int, input().split())) for _ in range(N)] dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def find_spaces(lab..

BOJ/Python 2024.03.20

백준 11725번 트리의 부모 찾기 파이썬

https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 내 코드 import sys from collections import deque input = sys.stdin.readline N = int(input()) visited = [0] * (N + 1) result = [0] * (N + 1) graph = [[] for _ in range(N + 1)] for i in range(N - 1): a, b = map(int, input().split()) graph[a].append(b) graph[b].app..

BOJ/Python 2023.06.16

백준 7576번 토마토 파이썬 BFS

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 내 답안 from collections import deque import sys input = sys.stdin.readline M, N = map(int, input().rstrip().split()) tomato = [list(map(int, input().rstrip().split())) for i in range(N)] date = [[0] * M for _ in rang..

BOJ/Python 2022.03.30

백준 24542번 튜터-튜티 관계의 수 파이썬

https://www.acmicpc.net/problem/24542 24542번: 튜터-튜티 관계의 수 첫째 줄에 튜터-튜티 관계를 정하는 경우의 수를 $1\,000\,000\,007$로 나눈 나머지를 출력한다. www.acmicpc.net 내 답안 import sys from collections import deque input = sys.stdin.readline N, M = map(int, input().split()) graph = [[] for _ in range(N + 1)] for _ in range(M): a, b = map(int, input().split()) graph[a].append(b) graph[b].append(a) visited = [0] * (N + 1) def bfs(..

BOJ/Python 2022.02.28

백준 2178번 미로 탐색 파이썬 BFS

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 내 답안 from collections import deque def bfs(x, y): queue = deque() queue.append((x, y)) while queue: x, y = queue.popleft() for i in range(4): # 상하좌우 탐색 nx = x + dx[i] ny = y + dy[i] # 범위를 벗어나면 무시 if nx = n or ny >= m: co..

BOJ/Python 2022.02.15

백준 2667번 단지 번호 붙이기 파이썬 DFS

https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 답안 lst = [] n = int(input()) graph = [] for i in range(n): graph.append(list(map(int, input()))) def dfs(x, y): if x = n or y = n: return False if graph[x][y] == 1: graph[x][y] = 0 lst.append(0) dfs(x-1, y) # 상 dfs(x, y-1) #..

BOJ/Python 2022.02.04

백준 1260번 DFS와 BFS 파이썬

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net from collections import deque import sys def bfs(graph, v, visited): q = deque([v]) visited[v] = True while q: v = q.popleft() print(v, end = " ") for i in graph[v]: if not visited[i]: q.append(i) visit..

BOJ/Python 2022.02.03