출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PuPq6AaQDFAUq
빈칸인 부분을 찾고, 거기부터 k번째 칸까지 빈칸인지 확인. 그리고 그 다음칸이 벽이면 들어갈 수 있는곳, 빈칸이라면 들어갈 수 없는 곳으로 처리를 해줬다.
단순하게 생각한대로 짜면 나옴
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int testCase = sc.nextInt();
for (int tc = 1; tc <= testCase; tc++) {
int n = sc.nextInt();
int k = sc.nextInt();
int cnt = 0;
int [][] map = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
map[i][j] = sc.nextInt();
}
}
for (int i = 0; i < n; i++) {
int kcnt = 0;
for (int j = 0; j <= n-k; j++) {
if(j==0 || map[i][j-1] == 0) {
boolean flg = false;
for(int l = 0; l<k; l++) {
if(map[i][j+l] == 0) { flg = true; break;}
if(l == k-1) {
if((l+j == n-1 && !flg) || (map[i][j+l+1]==0 && !flg)) {
cnt++;
}
}
}
}
}
}
for (int i = 0; i < n; i++) {
int kcnt = 0;
for (int j = 0; j <= n-k; j++) {
if(j==0 || map[j-1][i] == 0) {
boolean flg = false;
for(int l =0; l<k; l++) {
if(map[j+l][i] == 0) { flg = true; break;}
if(l == k-1) {
if((l+j == n-1 && !flg) || (map[j+l+1][i]==0 && !flg)) {
cnt++;
}
}
}
}
}
}
System.out.println("#" + tc + " " + cnt);
}
}
}
'알고리즘' 카테고리의 다른 글
[SWEA/JAVA] 4522 세상의 모든 팰린드롬 (1) | 2024.11.15 |
---|---|
[SWEA/JAVA] 4299. 태혁이의 사랑은 타이밍 (0) | 2024.11.14 |
[SWEA/JAVA] 1230 암호문3 (0) | 2024.11.12 |
[SWEA/JAVA] 2001 파리퇴치 (0) | 2024.11.11 |
[백준/JAVA] 1966 프린터큐 (0) | 2024.11.10 |