문제 풀이 및 개발 공간

[백준] 6983번 Where's Waldorf? (silver 2 본문

백준공부/java

[백준] 6983번 Where's Waldorf? (silver 2

gomduri43 2023. 9. 22. 18:09

import java.io.*;
import java.util.*;

public class Main{
    static int[] numx={1,1,1,0,0,-1,-1,-1};
    static int[] numy={0,-1,1,1,-1,0,1,-1};
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        int t=Integer.valueOf(br.readLine());
        for(int i=0; i<t; i++){
            st=new StringTokenizer(br.readLine());
            int n=Integer.valueOf(st.nextToken());
            int m=Integer.valueOf(st.nextToken());

            int[][] map=new int[n+1][m+1];
            for(int j=1; j<=n; j++){
                String a=br.readLine().toLowerCase();
                for(int k=1; k<=m; k++){
                    map[j][k]=a.charAt(k-1)-'a';
                }
            }
            int q=Integer.valueOf(br.readLine());
            for(int j=0; j<q; j++){
                boolean isIn=false;
                String quiz=br.readLine().toLowerCase();
                for(int y=1; y<=n; y++){
                    for(int x=1; x<=m; x++){
                        if(map[y][x]==quiz.charAt(0)-'a'){
                            for(int nth=0; nth<8; nth++){
                                int tx=x;
                                int ty=y;
                                for(int how=1; how<quiz.length(); how++){
                                    tx+=numx[nth];
                                    ty+=numy[nth];
                                    if(tx<1 || tx>m || ty<1 || ty>n || map[ty][tx]!=quiz.charAt(how)-'a'){
                                        break;
                                    }
                                    if(how==quiz.length()-1){
                                        isIn=true;
                                        break;
                                    }
                                }
                                if(isIn){
                                    break;
                                }
                            }
                            if(isIn){
                                bw.write(y+" "+x+"\n");
                                x=m+1;
                                y=n+1;
                            }
                        }
                    }
                }
                bw.write(isIn ? "" : n+" "+m+"\n");
            }
            bw.write("\n");
        }
        bw.flush();
    }
}