월도를 찾아라

면접 대비

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

요약
문자 격자와 단어 목록이 주어질 때, 각 단어를 여덟 방향 중 하나의 직선으로 찾아 첫 글자의 위치를 출력하고, 없으면 격자의 마지막 칸을 출력한다.
난이도

보통10점 중 4점

유형
배열, 문자열, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

mm개의 행과 nn개의 열로 이루어진 글자 격자와 단어 목록이 주어진다. 각 단어가 격자의 어느 위치에 나타나는지 찾아라.

단어는 격자 칸들이 이루는 곧고 끊김 없는 직선을 따라 놓여 있으면 격자에 나타난 것으로 본다. 대소문자는 구분하지 않는다. 직선은 가로(왼쪽 또는 오른쪽), 세로(위 또는 아래), 두 대각선 방향 중 어느 하나로 뻗을 수 있으며, 모두 여덟 방향이 가능하다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 형식은 다음과 같다.

  • 두 정수 mm과 nn이 주어진다 (1≤m≤501 \le m \le 50, 1≤n≤501 \le n \le 50).
  • 이어서 mm개의 줄이 주어지며, 각 줄에는 정확히 nn개의 글자가 있다. 이것이 글자 격자이다. 글자는 대문자 또는 소문자일 수 있다.
  • 찾을 단어의 개수 kk가 한 줄에 주어진다 (1≤k≤201 \le k \le 20).
  • 이어서 kk개의 줄에 한 줄에 하나씩 단어가 주어진다. 각 단어는 대문자와 소문자로만 이루어지며(공백, 하이픈, 그 외 문자는 없다) 길이는 11 이상이다.

출력

각 단어에 대해 그 단어의 첫 글자가 있는 칸의 행 번호와 열 번호를 공백 하나로 구분하여 출력한다.

행 번호는 위에서부터 11부터 mm까지, 열 번호는 왼쪽에서부터 11부터 nn까지이다.

한 단어가 여러 번 나타나면, 첫 글자가 가장 위쪽에 있는 것을 고른다. 가장 위쪽인 것이 여러 개이면 그중 가장 왼쪽인 것을 고른다. 즉, 행 우선(위에서 아래로, 같은 행에서는 왼쪽에서 오른쪽으로) 순서로 가장 앞서는 첫 글자 칸을 선택한다.

단어가 전혀 나타나지 않으면 대신 mm과 nn을 출력한다.

한 테스트 케이스의 결과는 줄을 바꿔 가며 차례로 출력하고, 서로 다른 테스트 케이스의 출력 사이에는 빈 줄 하나를 넣어 구분한다.

예제1

  1. 예제 1

    입력
    2
    2 2
    by
    re
    2
    be
    ab
    8 11
    abcDEFGhigg
    hEbkWalDork
    FtyAwaldORm
    FtsimrLqsrc
    byoArBeDeyv
    Klcbqwikomk
    strEBGadhrb
    yUiqlxcnBjf
    4
    Waldorf
    Bambi
    Betty
    Dagbert
    
    예상 출력
    1 1
    2 2
    
    2 5
    2 3
    1 2
    7 8