Java/SW Expert Academy

1979. 어디에 단어가 들어갈 수 있을까

GLOWWW 2021. 1. 7. 22:28
package oSWExpertAcademy;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class D2_1979 {
    public static void main(String[]args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            StringTokenizer st = new StringTokenizer(br.readLine());
            //총 횟수  
            int attempt = Integer.parseInt(st.nextToken());
            for(int i=1; i<=attempt; i++) {
                String[] input = br.readLine().split(" ");
                //퍼즐 사이즈  
                int size = Integer.parseInt(input[0]);
                //들어가는 단어의 길이  
                int length = Integer.parseInt(input[1]);
                //퍼즐 배열 만들기  
                int[][] arr = new int[size][size];
                //2중 for문 돌려서 퍼즐 배열에 값 넣기 
                for(int j=0; j<size; j++) {
                    st = new StringTokenizer(br.readLine());
                    for(int k=0; k<size; k++) {
                    arr[j][k] = Integer.parseInt(st.nextToken());
                    }
                }
                //들어갈 수 있는 단어의 수 
                int count = 0;
                //Horizontal >> y 축 확인 
                for(int j=0; j<size; j++) {
                    outerloop:
                        for(int k=0; k<=size-length; k++) {
                            if(k!=0 && arr[j][k-1]==1) {
                                continue;
                            }
                            if(k+length!=size && arr[j][k+length] ==1) {
                                continue;
                            }
                            for(int l=0; l<length; l++) {
                                if(arr[j][k+l] == 0) {
                                    continue outerloop;
                                }
                            }
                            count++;
                        }
                }
                //Vertical >> x 축 확인 
                for(int j=0; j<size; j++) {
                    outerloop:
                        for(int k=0; k<=size-length; k++) {
                            if(k!=0 && arr[k-1][j]==1) {
                                continue;
                            }
                            if(k+length!=size && arr[k+length][j] ==1) {
                                continue;
                            }
                            for(int l=0; l<length; l++) {
                                if(arr[l+k][j] == 0) {
                                    continue outerloop;
                                }
                            }
                            count++;
                        }
                }
                System.out.println("#"+i+" "+count);
            }
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}