J1Yun
ZU-TECHLOG
J1Yun
전체 방문자
였늘
μ–΄μ œ
  • πŸ“‘ Category (135)
    • Algorithm (61)
      • πŸ“š Concept (6)
      • πŸ“˜ Baekjoon Judge (53)
      • πŸ“— Programmers (2)
    • Computer Science (42)
      • πŸ”’ Operating System (14)
      • πŸ“‘ Network (15)
      • πŸ’Ύ Database (8)
      • 🧩 Design Pattern (4)
      • πŸ”‘ Security (1)
    • Activities (12)
      • 🦁 λ©‹μŸμ΄μ‚¬μžμ²˜λŸΌ 9κΈ° (6)
      • πŸ’» SWλ§ˆμ—μŠ€νŠΈλ‘œ 13κΈ° (6)
    • Infra (1)
      • ☁️ AWS (1)
    • Languages (1)
      • πŸ’™ Python (1)
    • Backend (7)
      • πŸ”΅ Django (4)
      • 🟒 Node.js (3)
    • Ect. (8)
      • πŸ’¬ Talk (0)
      • πŸ—‚οΈ 개발직ꡰ μ·¨μ—… μ€€λΉ„μžλ£Œ (8)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

250x250
hELLO Β· Designed By μ •μƒμš°.
J1Yun

ZU-TECHLOG

[BOJ] λ°±μ€€ 7562번 λ‚˜μ΄νŠΈμ˜ 이동 - 파이썬(Python)
Algorithm/πŸ“˜ Baekjoon Judge

[BOJ] λ°±μ€€ 7562번 λ‚˜μ΄νŠΈμ˜ 이동 - 파이썬(Python)

728x90

문제

체슀판 μœ„μ— ν•œ λ‚˜μ΄νŠΈκ°€ 놓여져 μžˆλ‹€. λ‚˜μ΄νŠΈκ°€ ν•œ λ²ˆμ— 이동할 수 μžˆλŠ” 칸은 μ•„λž˜ 그림에 λ‚˜μ™€μžˆλ‹€. λ‚˜μ΄νŠΈκ°€ μ΄λ™ν•˜λ €κ³  ν•˜λŠ” 칸이 μ£Όμ–΄μ§„λ‹€. λ‚˜μ΄νŠΈλŠ” λͺ‡ 번 움직이면 이 칸으둜 이동할 수 μžˆμ„κΉŒ?

μž…λ ₯

μž…λ ₯의 첫째 μ€„μ—λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ κ°œμˆ˜κ°€ μ£Όμ–΄μ§„λ‹€.

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” μ„Έ μ€„λ‘œ 이루어져 μžˆλ‹€. 첫째 μ€„μ—λŠ” 체슀판의 ν•œ λ³€μ˜ 길이 l(4 ≤ l ≤ 300)이 μ£Όμ–΄μ§„λ‹€. 체슀판의 ν¬κΈ°λŠ” l × l이닀. 체슀판의 각 칸은 두 수의 쌍 {0, ..., l-1} × {0, ..., l-1}둜 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. λ‘˜μ§Έ 쀄과 μ…‹μ§Έ μ€„μ—λŠ” λ‚˜μ΄νŠΈκ°€ ν˜„μž¬ μžˆλŠ” μΉΈ, λ‚˜μ΄νŠΈκ°€ μ΄λ™ν•˜λ €κ³  ν•˜λŠ” 칸이 μ£Όμ–΄μ§„λ‹€.

좜λ ₯

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ λ‚˜μ΄νŠΈκ°€ μ΅œμ†Œ λͺ‡ λ²ˆλ§Œμ— 이동할 수 μžˆλŠ”μ§€ 좜λ ₯ν•œλ‹€.

 

https://www.acmicpc.net/problem/7562

 

7562번: λ‚˜μ΄νŠΈμ˜ 이동

체슀판 μœ„μ— ν•œ λ‚˜μ΄νŠΈκ°€ 놓여져 μžˆλ‹€. λ‚˜μ΄νŠΈκ°€ ν•œ λ²ˆμ— 이동할 수 μžˆλŠ” 칸은 μ•„λž˜ 그림에 λ‚˜μ™€μžˆλ‹€. λ‚˜μ΄νŠΈκ°€ μ΄λ™ν•˜λ €κ³  ν•˜λŠ” 칸이 μ£Όμ–΄μ§„λ‹€. λ‚˜μ΄νŠΈλŠ” λͺ‡ 번 움직이면 이 칸으둜 이동할 수

www.acmicpc.net

 

πŸ’‘ 풀이 및 μ½”λ“œ

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 처리λ₯Ό ν•΄μ£Όμ—ˆλ‹€. 

728x90

'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
    'Algorithm/πŸ“˜ Baekjoon Judge' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ 글이닀
    • [BOJ] λ°±μ€€ 2293번 동전1 - 파이썬(Python)
    • [BOJ] λ°±μ€€ 3107번 IPv6 - 파이썬(Python)
    • [BOJ] λ°±μ€€ 9465번 μŠ€ν‹°μ»€ - 파이썬(Python)
    • [BOJ] λ°±μ€€ 1202번 보석 도둑 - 파이썬(Python)
    J1Yun
    J1Yun
    개발 κ΄€λ ¨ 기술 및 곡뢀 λ‚΄μš© 기둝μž₯

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”