import sys from collections import deque input = sys.stdin.readline # 상하좌우, 체스 나이트 이동 monkey = [[1,0],[0,1],[-1,0],[0,-1]] horse = [[-2,-1], [-2,1],[-1,-2],[-1,2],[2,-1],[2,1],[1,-2],[1,2]] K = int(input()) # 체스 나이트처럼 움직일 수 있는 횟수 W, H = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(H)] ## 특정 이동 방식에 횟수가 정해져 있을 때 3차원 배열 활용! ## 즉, 방문 처리 배열을 3차원으로 나타냄: visited[열][..
BFS
import sys from collections import deque input = sys.stdin.readline MAX = 100000 + 1 n, k = map(int, input().split()) visited = [-1] * MAX # [위치][시간] 으로 하려고 했으나 메모리 초과로 [위치]=시간으로 바꿈(물론 dist 배열을 따로 둬도 됨) def bfs(): q = deque() q.append(n) visited[n] = 0 while q: loc = q.popleft() # 동생 위치를 찾음 if loc == k: return visited[loc] # 순간이동 if loc * 2 < MAX and visited[loc*2] == -1: visited[loc*2] = visite..
import sys input = sys.stdin.readline r, c = map(int, input().split()) yard = [list(input().rstrip()) for _ in range(r)] visited = [[False for _ in range(c)] for _ in range(r)] # . 빈필드 / # 울타리 / o 양 / v 늑대 def bfs(a, b): stack = [(a,b)] sheep, wolf = 0, 0 while stack: x, y = stack.pop() visited[x][y] = True # 양, 늑대 개수 세기 if yard[x][y] == 'o': sheep += 1 elif yard[x][y] == 'v': wolf += 1 for dx, ..