개발 공부 기록

[SWEA 1979번 / JAVA] 어디에 단어가 들어갈 수 있을까 본문

PS/Implement

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

나만없서고냥이 2023. 11. 19. 00:52

Question

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PuPq6AaQDFAUq

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 


💡 Solution

1. 값이 1일 경우 size를 + 1 해줍니다.

2. 값이 0일 경우(즉, 벽을 만났을 경우) size가 K라면 count를 + 1 해줍니다. 이후 size를 다시 초기화합니다.

3. 한 행/열의 탐색을 모두 마친 후 size가 K라면 count를 + 1 해줍니다.

 

💻 Code

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

public class SWEA1979 {
	static int N, K;
	static int[][] map;
	static int[] dx = {1, -1};
	static int[] dy = {1, -1};
	static boolean[][] visited;
 
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		int T = Integer.parseInt(br.readLine());
		for (int tc = 1; tc <= T; tc++) {
			st = new StringTokenizer(br.readLine());
			N = Integer.parseInt(st.nextToken());
			K = Integer.parseInt(st.nextToken());
			
			map = new int[N][N];
			visited = new boolean[N][N];
			for (int i = 0; i < N; i++) {
				st = new StringTokenizer(br.readLine());
				for (int j = 0; j < N; j++) {
					// 흰 색 : 1, 검은색 : 0
					map[i][j] = Integer.parseInt(st.nextToken());
				}
			}
			
			//행 검사하기
			int count = 0;
			for (int i = 0; i < N; i++) {
				int size = 0;
				for (int j = 0; j < N; j++) {
					if (map[i][j] == 1) {
						size++;
					} else {
						if (size == K) {
							count++;
						}
						size = 0;
					}
				}
				if (size == K) {
					count++;
				}
			}
			
			//열 검사하기
			for (int j = 0; j < N; j++) {
				int size = 0;
				for (int i = 0; i < N; i++) {
					if (map[i][j] == 1) {
						size++;
					} else {
						if (size == K) {
							count++;
						}
						size = 0;
					}
				}
				if (size == K) {
					count++;
				}
			}
			
			System.out.printf("#%d %d\n", tc, count);
		}
	}
	
}