단어 퍼즐

면접 대비

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

요약
글자 격자와 단어 목록이 주어질 때, 각 단어가 시작하는 칸과 8방향 중 읽는 방향을 찾고 행, 열, 방향 순으로 가장 앞선 위치를 출력한다.
난이도

보통10점 중 4점

유형
배열, 완전 탐색, 시뮬레이션, 문자열 매칭
정답자
아직 제출이 없습니다

문제

직사각형 격자판에서 여러 개의 단어를 찾는 단어 퍼즐을 푼다.

각 단어는 격자판 안에서 상하, 좌우, 대각선을 포함한 8개 방향 중 하나로 연속된 칸에 나타난다. 각 단어에 대해 단어가 시작하는 칸의 위치와, 그 칸에서부터 단어를 읽어 나가는 방향을 구하라.

가장 왼쪽 위 칸의 좌표는 (0,0)(0, 0)이며, 아래로 갈수록 행 번호가, 오른쪽으로 갈수록 열 번호가 커진다.

방향은 북쪽을 A로 하여 시계 방향으로 A부터 H까지 붙인다.

문자방향행 변화열 변화
A북−1-100
B북동−1-1+1+1
C동00+1+1
D남동+1+1+1+1
E남+1+100
F남서+1+1−1-1
G서00−1-1
H북서−1-1−1-1

입력

첫째 줄에 격자판의 행 수 LL, 열 수 CC, 찾아야 할 단어의 개수 WW가 주어진다 (0<L,C,W≤10000 < L, C, W \le 1000).

다음 LL개의 줄에 격자판이 주어지며, 각 줄은 CC개의 대문자 알파벳으로 이루어진다.

이어서 WW개의 줄에 찾아야 할 단어가 한 줄에 하나씩 주어진다. 각 단어는 대문자 알파벳으로 이루어지며, 반드시 격자판 안에 존재한다.

출력

WW개의 줄에 걸쳐 각 단어의 답을 출력한다. 각 줄에는 단어가 시작하는 칸의 행 번호와 열 번호, 그리고 읽는 방향을 나타내는 문자(A~H)를 공백으로 구분하여 출력한다.

한 단어가 여러 위치에서 나타날 수 있다. 이때 다음 기준을 순서대로 적용하여 가장 앞서는 위치 하나만 출력한다.

  • 행 번호가 더 작은 것
  • 행 번호가 같으면 열 번호가 더 작은 것
  • 행과 열 번호가 모두 같으면 방향 문자가 더 작은 것 (A가 가장 작고 H가 가장 크다)

예제2

  1. 예제 1

    입력
    20 20 10
    QWSPILAATIRAGRAMYKEI
    AGTRCLQAXLPOIJLFVBUQ
    TQTKAZXVMRWALEMAPKCW
    LIEACNKAZXKPOTPIZCEO
    FGKLSTCBTROPICALBLBC
    JEWHJEEWSMLPOEKORORA
    LUPQWRNJOAAGJKMUSJAE
    KRQEIOLOAOQPRTVILCBZ
    QOPUCAJSPPOUTMTSLPSF
    LPOUYTRFGMMLKIUISXSW
    WAHCPOIYTGAKLMNAHBVA
    EIAKHPLBGSMCLOGNGJML
    LDTIKENVCSWQAZUAOEAL
    HOPLPGEJKMNUTIIORMNC
    LOIUFTGSQACAXMOPBEIO
    QOASDHOPEPNBUYUYOBXB
    IONIAELOJHSWASMOUTRK
    HPOIYTJPLNAQWDRIBITG
    LPOINUYMRTEMPTMLMNBO
    PAFCOPLHAVAIANALBPFS
    MARGARITA
    ALEMA
    BARBECUE
    TROPICAL
    SUPREMA
    LOUISIANA
    CHEESEHAM
    EUROPA
    HAVAIANA
    CAMPONESA
    
    예상 출력
    0 15 G
    2 11 C
    7 18 A
    4 8 C
    16 13 B
    4 15 E
    10 3 D
    5 1 E
    19 7 C
    11 11 H
    
  2. 예제 2

    입력
    3 3 8
    ABC
    DEF
    GHI
    EB
    EC
    EF
    EI
    EH
    EG
    ED
    EA
    
    예상 출력
    1 1 A
    1 1 B
    1 1 C
    1 1 D
    1 1 E
    1 1 F
    1 1 G
    1 1 H