만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

뱀 게임

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

요약
격자판에 있는 뱀(최대 16칸)이 벽이나 자기 몸에 부딪히지 않고 머리로 사과에 도달할 수 있는지 판단합니다.
난이도

보통10점 중 6점

유형
DFS, 해시맵, 시뮬레이션
정답자
아직 제출이 없습니다

문제

Google 버전의 Snake

뱀 게임은 고전 비디오 게임이다. 현대 미술관(MoMA)에 보존되어 있고, '역대 최고의 비디오 게임 100선'에 선정되었다. 게임의 목표는 뱀의 머리를 사과까지 옮기는 것이다. 뱀이 사과에 닿으면 사과를 먹고 몸이 길어진다. 그러면 새 사과가 놓이고, 길어진 뱀은 그 사과를 다시 먹어야 한다.

게임은 격자 위에서 진행되며, 뱀 몸의 각 칸은 격자의 한 칸을 차지한다. 머리는 세 방향으로 방향을 틀 수 있지만 뒤로 갈 수는 없다. 몸통은 머리를 따라간다. 머리가 몸통과 부딪히거나 격자 밖으로 나가서는 안 된다. 뱀 전체가 동시에 움직이므로, 머리는 꼬리가 막 비우는 칸으로 들어갈 수 있다.

이 게임에는 순발력과 선견지명이 필요하다. 뱀이 길어질수록, 머리가 사과에 닿기 전에 벽이나 자기 몸통에 부딪혀 죽을 수밖에 없는 방향으로 꺾기가 쉬워진다.

주어진 머리의 위치에서 머리가 사과에 도달할 수 있는지, 아니면 반드시 죽는지 판별하는 프로그램을 작성하라.

입력

첫째 줄에 격자의 행 수 rr과 열 수 cc가 주어진다 (1≤r,c≤101≤r,c≤10, r⋅c≥2r \cdot c≥2).

다음 rr개 줄에는 길이가 정확히 cc인 문자열이 주어진다. 사용되는 문자는 '.', '0'부터 '9', 'a'부터 'f', 'A'이다. '.'은 빈 칸을 뜻한다. 16진수 숫자 '0'부터 '9'와 'a'부터 'f'는 뱀을, 'A'는 사과를 뜻한다.

뱀의 길이는 1칸 이상 16칸 이하이다. 머리는 '0'이고, 나머지 숫자는 '1', '2'처럼 순서대로 이어진다(숫자를 건너뛰지 않는다). 같은 숫자는 한 번만 나오며, '0'을 제외한 각 숫자는 바로 앞 숫자와 인접해 있다. 사과는 격자에 정확히 하나 있다.

출력

정수 하나를 출력한다. 머리가 사과에 도달할 수 있으면 1을, 도달할 수 없어 반드시 죽으면 0을 출력한다.

예제4

  1. 예제 1

    입력
    5 8
    ......01
    ....98.2
    ...A.7.3
    .....654
    ........
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5 4
    ...A
    ....
    6789
    5432
    ..01
    
    예상 출력
    0
    
  3. 예제 3

    입력
    5 5
    ....A
    .....
    678..
    54321
    ....0
    
    예상 출력
    1
    
  4. 예제 4

    입력
    4 4
    567A
    4389
    12ba
    0dc.
    
    예상 출력
    1