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();
}
}
}