🔑알고리즘/baekjoon

백준 7562 : 나이트의 이동 - 파이썬 풀이 (bfs 알고리즘 이용)

2022. 8. 30. 17:05
반응형

 

 

백준 7562번 나이트의 이동 문제입니다.

 

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

 

7562번: 나이트의 이동

체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수

www.acmicpc.net

 

 

 

입력 예제입니다.

첫째 줄은 테스트 케이스의 개수

그 다음 줄은 하나의 테스트 케이스로

체스판의 크기, 현재 있는 칸, 목적지 이렇게 주어집니다.

3
8
0 0
7 0
100
0 0
30 50
10
1 1
1 1

출력 예제입니다. 

5
28
0

 

 

나이트의 8번의 이동을 bfs로 구현해서 풀었습니다.

나이트는 (2, 1), (1, 2), (-2, 1), (-1, 2), (2, -1), (1, -2), (-2, -1), (-1, -2) 이렇게 움직이며

체스판을 넘어가면 안됩니다.

 

sys.stdin.readlind() 으로 풀어야 시간초과가 나지 않습니다. 

from collections import deque
import sys

n = int(sys.stdin.readline())

dx = [2, 1, -2, -1, 2, 1, -2, -1]
dy = [1, 2, 1, 2, -1, -2, -1, -2]


def bfs(x, y):
    queue = deque()
    queue.append((x, y))
    li[x][y] = 1 #시작할 때 1로 초기화 했기 때문에
    while queue:
        x, y = queue.popleft()
        for i in range(8):
            nx, ny = dx[i] + x, dy[i] + y
            if nx < 0 or nx >= m or ny < 0 or ny >= m:
                continue
            if li[nx][ny] == 0:
                li[nx][ny] = li[x][y] + 1
                queue.append((nx, ny))


for i in range(n):
    m = int(sys.stdin.readline())
    li = [[0] * m for _ in range(m)]
    a, b = map(int, sys.stdin.readline().split())
    a1, b1 = map(int, sys.stdin.readline().split())
    bfs(a, b)
    print(li[a1][b1] - 1) #여기서 -1을 해줘야함

 

input()으로 풀면 시간초과가 납니다. 

반응형
저작자표시 (새창열림)

'🔑알고리즘 > baekjoon' 카테고리의 다른 글

백준 1303 : 전투 파이썬 문제 풀이(bfs 알고리즘 사용)  (0) 2022.08.24
백준 1012 : 유기농 배추 파이썬 풀이(bfs 알고리즘)  (0) 2022.08.21
백준 2606번 : 바이러스 python 문제 풀이 (bfs 알고리즘)  (0) 2022.08.18
백준 16435 : 스네이크 버드 파이썬 정답 풀이  (0) 2022.08.04
백준 10974 : 모든 순열 파이썬 정답 풀이  (0) 2022.08.03
'🔑알고리즘/baekjoon' 카테고리의 다른 글
  • 백준 1303 : 전투 파이썬 문제 풀이(bfs 알고리즘 사용)
  • 백준 1012 : 유기농 배추 파이썬 풀이(bfs 알고리즘)
  • 백준 2606번 : 바이러스 python 문제 풀이 (bfs 알고리즘)
  • 백준 16435 : 스네이크 버드 파이썬 정답 풀이
pkyung
pkyung
성장하는 중pkyung 님의 블로그입니다.
pkyung
성장하는 중
pkyung
전체
오늘
어제
  • 분류 전체보기
    • 🏆토이 프로젝트에서 생긴 일
    • 🤿백엔드 내실 채우기
    • 🍫카카오 테크 캠퍼스 2기 BE
    • 🍀spring
      • 스프링 입문
      • 스프링 핵심원리 기본
      • 스프링 jpa
      • 🐛debug
    • 🔒보안
    • 🌎infra
      • docker
      • kubernetes
      • cloud
    • 🌐web
      • HTTP 웹 기본 지식
    • 🔑알고리즘
      • baekjoon
      • programming language
    • 🎞️프로젝트
      • android
      • flutter
    • 📚수업
      • 교양과목
    • 💾database
    • ⚙settings
    • 2023 여름 모각코 - 절개와지조
    • 2024 겨울 모각코 - 내 장점은 algorit..

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 문자열
  • 카카오테크캠퍼스
  • 김영한
  • 소수
  • python
  • HTTP
  • nginx
  • 스택
  • sql
  • 백준
  • spring
  • 파이썬
  • Java
  • mysql
  • 코드리뷰
  • 객체지향의사실과오해
  • springboot
  • 스프링기본
  • 카테캠
  • 스프링부트
  • Docker
  • 데이터베이스
  • 자바
  • 자바문자열
  • 객체지향
  • BFS
  • Security
  • be
  • JPA
  • 스프링

최근 댓글

최근 글

hELLO · Designed By 정상우.
pkyung
백준 7562 : 나이트의 이동 - 파이썬 풀이 (bfs 알고리즘 이용)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.