퍼즐

면접 대비

시간 제한1초메모리 제한32 MB

요약
3x3 슬라이딩 퍼즐을 목표 상태로 만드는 최소 이동 횟수를 구하고, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 4점

유형
BFS, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

3x3 표에는 0부터 8까지의 수가 한 칸에 하나씩 들어 있다. 0은 빈칸을 뜻한다. 목표 상태는 다음과 같다.

123
456
780

한 번의 이동에서는 빈칸과 상하좌우로 인접한 숫자 하나를 맞바꿀 수 있다. 표 밖으로 이동할 수는 없다.

초기 상태가 주어졌을 때, 목표 상태로 만들기 위한 최소 이동 횟수를 구하시오.

입력

현재 표의 상태가 세 줄에 걸쳐 주어진다. 각 줄에는 공백으로 구분된 정수 세 개가 주어진다. 빈칸은 0으로 표시되며, 0부터 8까지의 수가 각각 한 번씩 등장한다.

출력

목표 상태까지 필요한 최소 이동 횟수를 출력한다. 목표 상태로 만들 수 없으면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    1 0 3
    4 2 5
    7 8 6
    
    예상 출력
    3
    
  2. 예제 2

    입력
    3 6 0
    8 1 2
    7 4 5
    
    예상 출력
    -1