λ¬Έμ
체μ€ν μμ ν λμ΄νΈκ° λμ¬μ Έ μλ€. λμ΄νΈκ° ν λ²μ μ΄λν μ μλ μΉΈμ μλ κ·Έλ¦Όμ λμμλ€. λμ΄νΈκ° μ΄λνλ €κ³ νλ μΉΈμ΄ μ£Όμ΄μ§λ€. λμ΄νΈλ λͺ λ² μμ§μ΄λ©΄ μ΄ μΉΈμΌλ‘ μ΄λν μ μμκΉ?
μ λ ₯
μ λ ₯μ 첫째 μ€μλ ν μ€νΈ μΌμ΄μ€μ κ°μκ° μ£Όμ΄μ§λ€.
κ° ν μ€νΈ μΌμ΄μ€λ μΈ μ€λ‘ μ΄λ£¨μ΄μ Έ μλ€. 첫째 μ€μλ 체μ€νμ ν λ³μ κΈΈμ΄ l(4 ≤ l ≤ 300)μ΄ μ£Όμ΄μ§λ€. 체μ€νμ ν¬κΈ°λ l × lμ΄λ€. 체μ€νμ κ° μΉΈμ λ μμ μ {0, ..., l-1} × {0, ..., l-1}λ‘ λνλΌ μ μλ€. λμ§Έ μ€κ³Ό μ μ§Έ μ€μλ λμ΄νΈκ° νμ¬ μλ μΉΈ, λμ΄νΈκ° μ΄λνλ €κ³ νλ μΉΈμ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
κ° ν μ€νΈ μΌμ΄μ€λ§λ€ λμ΄νΈκ° μ΅μ λͺ λ²λ§μ μ΄λν μ μλμ§ μΆλ ₯νλ€.
https://www.acmicpc.net/problem/7562
π‘ νμ΄ λ° μ½λ
import sys
from collections import deque
input = sys.stdin.readline
dx = [2, 2, -2, -2, 1, 1, -1, -1]
dy = [1, -1, 1, -1, 2, -2, 2, -2]
n = int(input())
result = []
for _ in range(n):
k = int(input())
xs, ys = map(int, input().split())
xe, ye = map(int, input().split())
queue = deque()
graph = [[-1]*k for _ in range(k)]
queue.append((xs, ys))
graph[xs][ys] = 0
while queue:
x, y = queue.popleft()
for j in range(8):
nx = x + dx[j]
ny = y + dy[j]
if nx < 0 or nx >= k or ny < 0 or ny >= k:
continue
if graph[nx][ny] != -1:
continue
graph[nx][ny] = graph[x][y] + 1
queue.append((nx, ny))
if graph[xe][ye] != -1:
break
result.append(graph[xe][ye])
for r in result:
print(r)
BFSλ°©μμΌλ‘ λμ΄νΈκ° μ΄λν μ μλ κ²½λ‘λ₯Ό μ΄λνλ©° μ΄λνμλ₯Ό κΈ°λ‘νλ€. λμ΄νΈ μ΄λ ν μ΄λ νμλ μ΄μ μ λμ΄νΈκ° μμλ μμΉκΉμ§μ μ΄λνμ(graph[x][y])μ 1μ λν κ°μΌλ‘ νννλ€. μκ°μ΄κ³Όλ₯Ό ν΄κ²°νκΈ° μν΄ λͺ©μ μ§μ λλ¬ νμ κ²½μ° λμ΄μ whileλ¬Έμ λμ§ μλλ‘ break μ²λ¦¬λ₯Ό ν΄μ£Όμλ€.
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 2293λ² λμ 1 - νμ΄μ¬(Python) (0) | 2021.12.31 |
---|---|
[BOJ] λ°±μ€ 3107λ² IPv6 - νμ΄μ¬(Python) (0) | 2021.12.29 |
[BOJ] λ°±μ€ 9465λ² μ€ν°μ»€ - νμ΄μ¬(Python) (0) | 2021.11.24 |
[BOJ] λ°±μ€ 1202λ² λ³΄μ λλ - νμ΄μ¬(Python) (0) | 2021.11.23 |
[BOJ] λ°±μ€ 1012λ² μ κΈ°λ λ°°μΆ - νμ΄μ¬(Python) (0) | 2021.10.07 |