https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net from collections import deque # 입력: # n -> 행의 수 # m -> 열의 수 n, m = map(int, input().split()) # 방향 이동 (상, 하, 우, 좌) dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] graph = [list(map(int, input().split())) for _ in range(n)] # 입력: 격자를 나타내는 2D ..
https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net # DFS 버젼 N, M = map(int, input().split()) graph = [list(map(int, input())) for _ in range(N)] visited = [[0] * M for _ in range(N)] visited[0][0] = 1 dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] count = 0 def DFS(x, y): for i in range(4): nx = x + ..
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 첫째 줄에 정점의 개수 N과 간선의 개수 M, 시작할 정점의 위치 V를 입력받는다. 첫째줄에 DFS 수행결과, 둘째줄에 BFS로 수행한 결과를 출력하면 된다. 문제풀이 먼저 문제를 빠르게 이해하기 위해 입출력을 살펴보자. 예제 입력 1 복사 4 5 1 1 2 1 3 1 4 2 4 3 4 예제 출력 1 복사 1 2 4 3 1 2 3 4 정점 4개에 간선 5..
https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 문제 첫째 줄에 정점의 개수 N과 간선의 개수 M을 입력받고, 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v를 입력받아 연결 요소의 개수를 구하면 되는 문제이다. 문제풀이 직관적인 풀이를 위해 예제 입력값을 순서대로 그려보겠다. 예제 입력 1 복사 6 5 1 2 2 5 5 1 3 4 4 6 예제 출력 1 복사 2 예제1을 보면 연..
https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 이 문제의 핵심만 집어보자. N x M의 상자에 토마토가 있다. ( N = 가로, M = 세로 || 2