https://www.acmicpc.net/problem/16920 코드처음에 작성한 코드 => 시간 초과from collections import dequeimport sysinput = sys.stdin.readlinen, m, p = map(int, input().split())s = [0]+list(map(int, input().split()))board = [list(input()) for _ in range(n)]ans = [0]*(p+1)dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]castle = [[] for _ in range(p+1)]# 처음 성의 위치for i in range(n): for j in range(m): if board[i][j] !=..
BFS
https://www.acmicpc.net/problem/1743 코드from collections import dequen, m, k = map(int, input().split())trash = [[False]*m for _ in range(n)]for _ in range(k): r, c = map(int, input().split()) trash[r-1][c-1] = Truevisited = [[False]*m for _ in range(n)]def bfs(x, y): res = 1 # 음식물 쓰레기 덩어리의 크기 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] q = deque([(x, y)]) visited[x][y] = True w..
https://www.acmicpc.net/problem/2589 코드from collections import dequeimport sysinput = sys.stdin.readliner, c = map(int, input().split())board = [input() for _ in range(r)]def bfs(x, y): # (x, y)에서 이동할 수 있는 육지 중 가장 먼 곳까지의 이동 시간 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] max_dist = 0 visited = [[False]*c for _ in range(r)] visited[x][y] = True q = deque([(x, y, 0)]) while q: ..
https://www.acmicpc.net/problem/6118 코드from collections import dequen, 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)# BFSq = deque([1])dist = [int(1e9)]*(n+1)dist[1] = 0ans = [-1, -1, -1]while q: now = q.popleft() for nx in graph[now]: if dist[nx] > dist[now]+1: ..
https://www.acmicpc.net/problem/14248 코드from collections import dequen = int(input())a = list(map(int, input().split()))start = int(input())-1q = deque([start])visited = [False]*nvisited[start] = Trueans = 1while q: now = q.popleft() # 왼쪽, 오른쪽 for nx in [now-a[now], now+a[now]]: if 0 단순히 각 돌에 방문할 수 있는지 여부만 판단하면 되기 때문에 BFS를 이용하여 갈 수 있는 돌들을 방문하며 개수를 세면 된다.