SW Expert Academy

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

c0mmedes 2022. 11. 16. 15:55



package ssafy;

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

public class Solution {
		
    public static void main(String[] args) throws Exception{
    
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		int T =  Integer.parseInt(br.readLine()); // 테스트 케이스
    		ArrayList<Integer> arr = new ArrayList<>(); // 정답을 저장할 list

    		// 테스트케이스
    		for(int i=0; i<T; i++) {   
        		int answer = 0;
        		StringTokenizer st = new StringTokenizer(br.readLine()," ");
    			
    			int count = 0;
    			int N = Integer.parseInt(st.nextToken());  // 단어 퍼즐의 가로, 세로 길이
    			int K = Integer.parseInt(st.nextToken());  // 단어의 길이
    			
    			// 퍼즐
    			int[][] puzzle = new int[N][N];

    			// 퍼즐에 입력값 초기화			
    			for(int j=0; j<N; j++) {
    				st = new StringTokenizer(br.readLine()," ");
    				for(int k=0; k<N; k++) {
    					puzzle[j][k] = Integer.parseInt(st.nextToken());
    				}
    			}
    			
    			// 가로에서의 조건 충족
    			for(int j=0; j<N; j++) {
    				for(int k=0; k<N; k++) {
    					// 1일때 카운트증가
    					if(puzzle[j][k] == 1) {
    						count++;    					
    					} else {
    						count = 0;
    					}
    					
    					// 카운트가 K(단어의 길이)를 충족할때 
        				if(count == K) {
        					// 마지막 칸이면 answer 증가시키고 카운트 0으로 초기화
        					if(k == N-1) {
        						answer++;
        						count = 0;
        						// 마지막 칸이 아닐 때 다음칸이 0이면 answer 증가시키고 카운트 0으로 초기화
        					} else {
        						if(puzzle[j][k+1] == 0) {
                					answer++;
                					count = 0;
        						}
        					}
        				} 
    					
    				}
    				count = 0;
    			}
    			
    			// 세로에서의 조건 충족
    			for(int j=0; j<N; j++) {
    				for(int k=0; k<N; k++) {
    					if(puzzle[k][j] == 1) {
    						count++;    					
    					} else {
    						count = 0;
    					}
    					
        				if(count == K) {
        					if(k == N-1) {
        						answer++;
        						count = 0;
        					} else {
        						if(puzzle[k+1][j] == 0) {
                					answer++;
                					count = 0;
        						}
        					}
        				} 
    				}
    				count = 0;
    			}
    			
    			arr.add(answer);
    			
    		}
    		
    			
    		for(int i=1; i<=T; i++) {
    			System.out.println("#" + i + " " + arr.get(i-1));
    		}
    	
    		
    }
    		
}