아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

빠른 무작위 숫자 탐색

면접 대비

시간 제한3초메모리 제한512 MB

요약
이동 불가 칸이 있는 5x5 보드에서 시작 칸에서 출발해 1부터 6까지 적힌 여섯 칸을 모두 방문하는 최소 이동 횟수를 구하고, 불가능하면 -1을 출력한다.
난이도

보통10점 중 6점

유형
그래프, BFS, 완전 탐색, 시뮬레이션
정답자
아직 제출이 없습니다

문제

5 x 5 크기의 보드가 주어진다. 보드는 1 x 1 크기의 정사각형 격자로 이루어져 있다. 보드의 격자에는 -1, 0, 1, 2, 3, 4, 5, 6중 하나의 수가 적혀 있다. 격자의 위치는 (r, c)로 표시한다. r은 행 번호, c는 열 번호를 나타낸다. 행 번호는 맨 위 위치가 0이고 아래 방향으로 1씩 증가한다. 열 번호는 맨 왼쪽 위치가 0이고 오른쪽으로 1씩 증가한다. 즉, 맨 왼쪽 위 위치가 (0, 0), 맨 아래 오른쪽 위치가 (4, 4)이다. -1이 적혀 있는 칸으로는 이동할 수 없고 0, 1, 2, 3, 4, 5, 6이 적혀 있는 칸으로는 이동할 수 있다.

현재 한 명의 학생이 (r, c) 위치에 있고 한 번의 이동으로 상, 하, 좌, 우 방향 중에서 한 가지 방향으로 한 칸 이동할 수 있다. 학생이 현재 위치 (r, c)에서 시작하여 1, 2, 3, 4, 5, 6이 적혀 있는 칸을 순서에 상관없이 모두 방문하려고 한다. 보드에는 1, 2, 3, 4, 5, 6이 적혀 있는 칸이 1개씩 존재하고 1, 2, 3, 4, 5, 6이 적혀 있는 칸을 여러 번 방문할 수 있다. 학생이 현재 위치 (r, c)에서 시작하여 1, 2, 3, 4, 5, 6이 적혀 있는 칸을 순서에 상관없이 모두 방문하는 최소 이동 횟수를 출력하자. 학생이 현재 위치 (r, c)에서 시작하여 1, 2, 3, 4, 5, 6이 적혀 있는 칸을 모두 방문할 수 없는 경우 -1을 출력한다.

입력

첫 번째 줄부터 다섯 개의 줄에 걸쳐 보드의 각 칸에 적혀있는 수가 순서대로 주어진다. i번째 줄의 j번째 수는 보드의 (i - 1)번째 행, (j - 1)번째 열에 적혀있는 수를 나타낸다. 보드의 각 칸에 적혀 있는 수는 -1, 0, 1, 2, 3, 4, 5, 6중 하나이다.

다음 줄에 학생의 현재 위치 r, c가 빈칸을 사이에 두고 순서대로 주어진다.

출력

학생이 현재 위치 (r, c)에서 시작하여 1, 2, 3, 4, 5, 6이 적혀 있는 칸을 순서에 상관없이 모두 방문하는 최소 이동 횟수를 출력한다. 학생이 현재 위치 (r, c)에서 시작하여 1, 2, 3, 4, 5, 6이 적혀 있는 칸을 모두 방문할 수 없는 경우 -1을 출력한다.

제한

  • 0 ≤ r, c ≤ 4
  • 학생의 현재 위치 (r, c)에는 0이 적혀 있다.
  • 1, 2, 3, 4, 5, 6이 적혀 있는 칸이 1개씩 주어진다.

예제3

  1. 예제 1

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

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

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