반응형
import java.util.*;
import java.io.*;
public class Main {
public static int N;
public static int L;
public static int[][] map;
public static int result = 0;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] s = br.readLine().split(" ");
N = Integer.parseInt(s[0]);
L = Integer.parseInt(s[1]);
map = new int[N][N];
for(int i = 0; i < N; i++){
s = br.readLine().split(" ");
for(int j = 0; j < N; j++){
map[i][j] = Integer.parseInt(s[j]);
}
}
for(int i = 0; i < N; i++){
row_check(i);
column_check(i);
}
System.out.println(result);
}
public static void row_check(int idx){
boolean[] incline = new boolean[N];
for(int i = 0; i < N - 1; i++){
int diff = map[idx][i] - map[idx][i + 1];
if(Math.abs(diff) >= 2){
return;
}// 높이 차이가 2 이상이라면
if(diff == 1){
if(i + L > N - 1){
return;
}// 충분한 칸 이 없다
for(int j = i + 1; j <= i + L; j++){
if(map[idx][j] != map[idx][i] - 1){
return;
}//내려가는 경사로를 설치할 때 도중에 높이가 바뀌어서는 안된다
incline[j] = true;
}
}// 내려가는 경사로 설치
if(diff == -1){
if(i - L + 1 < 0){
return;
}// 충분한 칸이 없다
for(int j = i; j >= i - L + 1; j--){
if(map[idx][j] != map[idx][i + 1] - 1){
return;
}
if(incline[j]){
return;
}//방문된적이 있다면 경사로 설치가 불가능
}
}//올라가는 경사로 설치
}
result++;
}
//
public static void column_check(int idx){
boolean[] incline = new boolean[N];
for(int i = 0; i < N - 1; i++){
int diff = map[i][idx] - map[i + 1][idx];
if(Math.abs(diff) >= 2){
return;
}// 높이 차이가 2 이상이라면
if(diff == 1){
if(i + L > N - 1){
return;
}// 충분한 칸 이 없다
for(int j = i + 1; j <= i + L; j++){
if(map[j][idx] != map[i][idx] - 1){
return;
}//내려가는 경사로를 설치할 때 도중에 높이가 바뀌어서는 안된다
incline[j] = true;
}
}// 내려가는 경사로 설치
if(diff == -1){
if(i - L + 1 < 0){
return;
}// 충분한 칸이 없다
for(int j = i; j >= i - L + 1; j--){
if(map[j][idx] != map[i + 1][idx] - 1){
return;
}
if(incline[j]){
return;
}//방문된적이 있다면 경사로 설치가 불가능
}
}//올라가는 경사로 설치
}
result++;
}
}
https://www.acmicpc.net/problem/14890
요즘 코딩 테스트 트렌드에 맞게 구현 위주의 문제로 다시 연습 중
반응형
'백준 문제풀이(JAVA)' 카테고리의 다른 글
백준 10217번(JAVA) - KCM Travel, 재채점 후 새로운 풀이 (1) | 2023.06.19 |
---|---|
백준 11003번(JAVA) (0) | 2021.08.09 |
백준 11562번(JAVA) (0) | 2021.07.25 |