만드는 중입니다

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

순환 단어 찾기

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

요약
가장자리에서 이어지는 격자에서 각 단어의 시작 위치와 방향(R, D, L, U)을 찾습니다.
난이도

쉬움10점 중 3점

유형
문자열 매칭, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

단어 찾기 퍼즐은 글자로 이루어진 격자에서 지정된 단어를 찾는 문제이다. 단어는 격자의 행, 열, 또는 대각선을 따라 연속된 글자로 놓여 있다. 더 어려운 단어 찾기에서는 이 방향들 중 어느 방향으로든 단어를 정방향이나 역방향으로 읽을 수 있다. '순환 단어 찾기'에서는 단어가 격자의 가장자리를 넘어 반대편에서 같은 줄을 따라 이어질 수 있고, 같은 단어의 글자를 다시 사용할 수도 있다. 이 문제에서는 대각선을 따라 찾지 않고 행과 열만 검색한다. (UCF 프로그래밍 코치들은 정말 친절하다!)

글자 격자와 단어 목록이 주어지면, 각 단어의 첫 글자 위치와 그 단어의 나머지 글자가 순서대로 이어지는 방향을 찾아라.

입력

첫 줄에는 단어 찾기 퍼즐의 개수를 나타내는 양의 정수 n이 주어진다. 이어서 각 퍼즐의 데이터가 주어진다. 각 퍼즐의 첫 줄에는 공백으로 구분된 두 양의 정수 r과 c가 주어진다. r은 격자의 행 수로 3 이상 12 이하이고, c는 열 수로 3 이상 20 이하이다. 다음 r줄에는 공백 없이 정확히 c개의 대문자 알파벳이 주어진다. 그다음 줄에는 찾을 단어의 개수를 나타내는 양의 정수 s가 주어진다. 이어서 s줄에 찾을 단어가 한 줄에 하나씩 주어진다. 단어는 대문자 알파벳으로만 이루어지며, 길이는 3 이상 100 이하이다. 단어가 어떤 언어에서든 실제 단어일 필요는 없다.

각 단어는 격자에 정확히 한 번 나타나며, 시작 위치는 하나이고 한 방향으로만 놓여 있다. 어떤 단어도 회문이 아니다. 입력은 여기에 설명된 대로 올바르다고 가정한다.

출력

각 단어 찾기 퍼즐마다 'Word search puzzle #p:' 줄을 출력한다. 여기서 p는 입력에서의 퍼즐 번호이며 1부터 센다. 그다음 해당 퍼즐에 주어진 단어를 주어진 순서대로 하나씩 'd r c w' 형식의 줄로 출력한다. w는 단어이고, r은 단어의 첫 글자가 있는 행 번호(1부터 센다), c는 첫 글자가 있는 열 번호(1부터 센다)이다. d는 첫 글자를 기준으로 나머지 글자가 놓인 방향이며, 아래 한 글자 코드를 사용한다. d, r, c 각각의 뒤에는 공백을 정확히 하나씩 출력한다.

코드다음 글자가 있는 경우:
'R'→같은 행에서 오른쪽으로 이어지고 뒤쪽 열로 진행하는 경우. 필요하면 같은 행의 첫 번째 열로 넘어간다
'D'↓같은 열에서 아래로 이어지고 뒤쪽 행으로 진행하는 경우. 필요하면 같은 열의 첫 번째 행으로 넘어간다
'L'←같은 행에서 왼쪽으로 이어지고 앞쪽 열로 되돌아가는 경우. 필요하면 같은 행의 마지막 열로 넘어간다
'U'↑같은 열에서 위로 이어지고 앞쪽 행으로 되돌아가는 경우. 필요하면 같은 열의 마지막 행으로 넘어간다

각 퍼즐의 출력 뒤에는 빈 줄을 하나 남긴다.

예제1

  1. 예제 1

    입력
    2
    6 12
    JARWORDEPIDG
    IWAXLOEAHNOK
    KPEPSORTHGIN
    ZASFCOFABEMW
    QEHEZIUSRSTY
    MWCORMNELTOS
    5
    WORD
    SEARCH
    KNIGHTRO
    UNDERFUND
    INGESTING
    3 7
    UCFAEHT
    KNIGHTS
    CODETRY
    2
    AGE
    THETHETHETHETH
    
    예상 출력
    Word search puzzle #1:
    R 1 4 WORD
    U 4 3 SEARCH
    L 3 1 KNIGHTRO
    D 5 7 UNDERFUND
    D 1 10 INGESTING
    
    Word search puzzle #2:
    D 1 4 AGE
    U 3 5 THETHETHETHETH