문제가 너무 길어서 코드만 올립니다.
저는 이전 경사로를 복구시키기가 귀찮아서 그냥 배열 2개를 선언했습니다.
한개는 행 전용 배열이고 한개는 열 전용 배열입니다.
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int l = scan.nextInt();
int[][] arr = new int[n][n];
int[][] arr2 = new int[n][n];
int count = 0;
for(int i = 0; i<n; i++) {
for(int j = 0; j<n; j++) {
arr[i][j] = scan.nextInt();
arr2[j][i] = arr[i][j];
}
}
//column
int curr = 0;
for(int i = 0; i<n ;i++) {
curr = arr[i][0];
for(int j = 1; j<n; j++) {
if(curr == arr[i][j]) {
if(j == n-1) {
count++;
}
continue;
}
else {
int flag = 0;
//높은곳 -> 낮은곳
if( curr > arr[i][j]) {
flag = 0;
if(j+l > n) {
break;
}
for(int k = 0; k<l; k++) {
if( !(curr-1 == arr[i][j+k]) ) {
flag = 1; break;
}
}
if(flag == 1) break;
else {
curr = arr[i][j+l-1];
arr[i][j+l-1] = 20;
j = j+l-1;
if(j == n-1) {
count++; break;
}
}
continue;
}
//낮은곳 -> 높은곳
else if(curr < arr[i][j]) {
flag = 0;
if(curr+1 < arr[i][j]) break;
if(j-l < 0) {
break;
}
for(int k = 1; k<=l; k++) {
if( !(curr == arr[i][j-k])) {
flag = 1;break;
}
}
if(flag == 1)
break;
else {
curr = arr[i][j];
if(j == n-1) count++;
}
}
}
}
}
//row
curr = 0;
for(int i = 0; i<n ;i++) {
curr = arr2[i][0];
for(int j = 1; j<n; j++) {
if(curr == arr2[i][j]) {
if(j == n-1) {
count++;
}
continue;
}
else {
int flag = 0;
//높은곳 -> 낮은곳
if( curr > arr2[i][j]) {
flag = 0;
if(j+l > n) {
break;
}
for(int k = 0; k<l; k++) {
if( !(curr-1 == arr2[i][j+k]) ) {
flag = 1; break;
}
}
if(flag == 1) break;
else {
curr = arr2[i][j+l-1];
arr2[i][j+l-1] = 20;
j = j+l-1;
if(j == n-1) {
count++; break;
}
}
continue;
}
//낮은곳 -> 높은곳
else if(curr < arr2[i][j]) {
flag = 0;
if(curr+1 < arr2[i][j]) break;
if(j-l < 0) {
break;
}
for(int k = 1; k<=l; k++) {
if( !(curr == arr2[i][j-k])) {
flag = 1;break;
}
}
if(flag == 1)
break;
else {
curr = arr2[i][j];
if(j == n-1) count++;
}
}
}
}
}
System.out.println(count);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 14899 백준 스타트와 링크 (0) | 2020.06.04 |
---|---|
[BaekJoon] 14892 백준 톱니바퀴 (0) | 2020.05.31 |
[BaekJoon] 14888 백준 연산자 끼워넣기 (0) | 2020.05.27 |
[BaekJoon] 백준 14503 로봇청소기 - Java (0) | 2020.05.25 |
[BaekJoon] 백준 14501 퇴사 - Java (0) | 2020.05.21 |