본문 바로가기

PS/백준

[BOJ] 백준 7562 나이트의 이동 (Swift)

반응형

문제

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

 

7562번: 나이트의 이동

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

www.acmicpc.net

풀이

BFS로 풀이할 수 있는 문제입니다.

체스판의 크기가 주어지면, l * l 크기의 2차원 Bool 배열을 만들어주었고, false로 초기화하였습니다.
2차원 배열을 나이트가 이동하는 경로를 확인 용도로 사용하려고 합니다.

또한 나이트는 8방향으로 움직일 수 있으므로, 8방향을 dy, dx라는 상수로 값을 주었습니다.

BFS를 할 때, 처음 큐에 초기 나이트의 y, x 좌표와 이동한 횟수(0)을 (Int, Int, Int) 튜플 형태로 넣어주었습니다.

8방향에 대해서 체스판의 범위를 벗어나는지 확인하고, 벗어나지 않고 방문한 적이 없다면
queue에 해당 좌표를 넣어주고, 이동한 횟수 + 1을 넣어주었습니다.

만약 이동한 방향이 나이트가 이동하려고 하는 칸이라면, 이동한 횟수를 출력해줍시다.

소스코드

후기

BFS로 풀 수 있는 문제였습니다.
4방향 -> 8방향으로 바뀐것 말고는 비슷한 문제들을 많이 풀어본 느낌이였습니다.

반응형