BFS

문제 (링크) https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 나의 풀이 import sys from collections import deque input = sys.stdin.readline n, m = map(int, input().split()) graph = [] for _ in range(n): row = list(str(input().rstrip())) graph.append(list(map(int, row..
문제 (링크) https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 나의 풀이 import sys from collections import deque from itertools import combinations import copy input = sys.stdin.readline n, m = map(int, input().split()) graph = [] virus_locs = [] empty_locs = [] moves = [ (1, 0), (-1, 0)..
문제 (링크) https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 나의 풀이 # 오답 import sys from collections import deque input = sys.stdin.readline move = [ [1, 0], [-1, 0], [0, 1], [0, -1] ] r, c = map(int, input().split()) dist = [[int(1e9)] * c for _ in range(r)] q_jihun =..
문제 (링크) https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 나의 풀이 from collections import deque visited = [[False] * n for _ in range(n)] move = [(0, 1), (0, -1), (1, 0), (-1, 0)] graph = [[] * n for _ in range(n)] for i in range(n): color = str(input()) for x in color: ..
문제 (링크) 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 나의 풀이 # BFS 이용 from collections import deque N, M = map(int, input().split()) visited = [False] * (N+1) graph = [[] for _ in range(N+1)] for _ in range(M): x, y = map(int, input()...
시간 제한 메모리 제한 1 초 256 MB 문제 (링크) https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 나의 풀이 from collections import deque dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] m, n = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] q = deque() for..
시간 제한 메모리 제한 1 초 256 MB 문제 (링크) https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 나의 풀이 from collections import deque # 나이트의 8가지 이동 dx = [1, 1, -1, -1, 2, 2, -2, -2] dy = [2, -2, 2, -2, 1, -1, 1, -1] def bfs(start_x, start_y, target_x, target_y): q = deque() q.append((start..
시간 제한 메모리 제한 1 초 128 MB 문제 (링크) https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 나의 풀이 import sys from collections import deque n = int(sys.stdin.readline()) graph = [] # 각 집으로의 이동을 표현할 좌표리스트 dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] for _ in range(n): graph.append(list(map(in..
SeongOnion
'BFS' 태그의 글 목록