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

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

미니골프

면접 대비

시간 제한4초메모리 제한1024 MB

요약
벽이 있는 격자에서 공을 상하좌우로 1칸에서 K칸까지 직선으로 칠 수 있을 때, 구멍에 넣는 최소 타수를 구한다.
난이도

보통10점 중 6점

유형
BFS, 그래프, 배열, 구현
정답자
아직 제출이 없습니다

문제

당신은 R×CR\times C 격자에서 미니골프를 한다. 한 번의 퍼트로 골프공을 위, 아래, 오른쪽, 왼쪽 네 방향 중 하나로 KK칸까지 원하는 만큼 굴릴 수 있다. 물론 벽을 통과하거나 코스 밖으로 공을 굴릴 수는 없다.

공을 홀에 넣는 데 필요한 최소 퍼트 수를 구하시오.

입력

첫째 줄에 세 정수 RR, CC, KK가 주어진다 (1≤R×C≤1 000 0001 \le R\times C \le 1\,000\,000이고 1≤K≤1 000 0001\le K \le 1\,000\,000). 이는 각각 행의 수, 열의 수, 공을 굴릴 수 있는 최대 거리이다.

다음 RR개의 줄에는 각각 CC개의 문자가 주어지며 미니골프 코스를 나타낸다.

  • "."는 빈 칸을 나타낸다.
  • "#"는 벽이 있는 칸을 나타낸다.
  • "S"는 시작 칸을 나타낸다. 입력에는 "S"가 정확히 하나 있다.
  • "G"는 홀이 있는 칸을 나타낸다. 입력에는 "G"가 정확히 하나 있다.

시작 칸에서 홀에 도달할 수 있음이 보장된다.

출력

공을 홀에 넣는 데 필요한 최소 퍼트 수를 정수로 출력한다.

예제3

  1. 예제 1

    입력
    2 3 2
    S.G
    ...
    
    예상 출력
    1
    
  2. 예제 2

    입력
    2 5 1
    S#...
    ...#G
    
    예상 출력
    7
    
  3. 예제 3

    입력
    16 10 100
    ..######..
    .#......#.
    #...G....#
    #........#
    .#......#.
    ..#....#..
    ..#....#..
    ..###..#..
    ..#....#..
    ..#..###..
    ..#....#..
    ..###..#..
    ..#....#..
    ..#....#..
    ..#.S..#..
    ..######..
    
    예상 출력
    7