본문 바로가기
알고리즘 풀이/SWEA

[SWEA][JAVA] 1979. 어디에 단어가 들어갈 수 있을까

by cornsilk-tea 2022. 1. 16.
package level_2;

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

public class SW_1979 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;
		int T = Integer.parseInt(br.readLine());
		for (int test_case = 1; test_case <= T; test_case++) {
			st = new StringTokenizer(br.readLine(), " ");
			int N = Integer.parseInt(st.nextToken());
			int K = Integer.parseInt(st.nextToken());
			int[][] arr = new int[N][N];
			for (int a = 0; a < N; a++) {
				st = new StringTokenizer(br.readLine(), " ");
				for (int b = 0; b < N; b++) {
					arr[a][b] = Integer.parseInt(st.nextToken());
				}
			}
			// 흰색 부분은 1, 검은색 부분은 0
			// 1이 쓸수있는 부분
			// 왼쪽에서 오른쪽으로 확인
			int wordcount = 0;
			int totalcount = 0;
			// bw.write("왼쪽에서 오른쪽으로" + "\n");
			for (int a = 0; a < N; a++) {
				for (int b = 0; b < N; b++) {
					if (arr[a][b] == 1) { // 해당 칸이 비어있는경우
						wordcount += 1;
						if (b == N - 1 & wordcount == K) {// 마지막줄에 왔을때
							// bw.write("한번추가 arr[" + a + "][" + b + "]" + "\n");
							totalcount += 1;
							wordcount = 0;
						}
					} else {// 해당칸이 차있을때 즉 0일때
						if (wordcount == K) {
							// bw.write("한번추가 arr[" + a + "][" + b + "]" + "\n");
							totalcount += 1;
						}
						wordcount = 0;
					}
				}
				wordcount = 0;// 한줄 끝날때마다 초기화
			}
			// bw.write("위에서 아래로" + "\n");
			wordcount = 0;
			for (int b = 0; b < N; b++) {
				for (int a = 0; a < N; a++) {
					if (arr[a][b] == 1) { // 해당 칸이 비어있는경우
						wordcount += 1;
						if (a == N - 1 & wordcount == K) {// 마지막줄에 왔을때
							// bw.write("한번추가 arr[" + a + "][" + b + "]" + "\n");
							totalcount += 1;
							wordcount = 0;
						}
					} else {// 해당칸이 차있을때 즉 0일때
						if (wordcount == K) {
							// bw.write("한번추가 arr[" + a + "][" + b + "]" + "\n");
							totalcount += 1;
						}
						wordcount = 0;
					}
				}
				wordcount = 0;// 한줄 끝날때마다 초기화
			}
			System.out.println("#" + test_case + " " + totalcount);
			// bw.write("#" + test_case + " " + totalcount + "\n");
			// bw.write(totalcount + "\n");
//			for (int[] aa : arr) {
//				for (int c : aa) {
//					bw.write(c + " ");
//				}
//				bw.write("\n");
//			}
//			bw.flush();
//			bw.close();
		}
		bw.flush();
		bw.close();
	}

}