1. 유형
시뮬
2. 풀이
완전탐색을 할 때, 몇가지 예외를 생각해야한다.
- 평평한 경우
- 오르막길
- 내리막길
이 3가지 경우를 구현해야 한다
이걸 구분하기 위해 plat 변수를 핸들링한다.
3. 코드
package 구현.삼성역태;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class back_14890경사로 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
int n = Integer.valueOf(st.nextToken());
int x = Integer.valueOf(st.nextToken());
int map[][] = new int[n][n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(in.readLine());
for (int j = 0; j < n; j++) {
map[i][j] = Integer.valueOf(st.nextToken());
}
}
int ans = 0;
for (int j = 0; j < n; j++) {
int cur;
int befo;
int plat = 1;
boolean check = true;
out: for (int i = 1; i < n; i++) {
cur = map[i][j];
befo = map[i - 1][j];
if (Math.abs(cur - befo) > 1) {
check = false;
break;// 2이상 차이나는 부분
} else if (cur < befo) {// 내리막길
for (int k = 0; k < x; k++) {
if (k + i >= n) {// 범위체크
check = false;
break out;
}
if (cur != map[i + k][j]) {// 현값하고 앞에 탐색값이 다르면 탈출
check = false;
break out;
}
}
i = i + (x - 1);
plat = 0;
} else if (cur > befo) {// 오르막길
if (plat < x) {
check = false;
break;
}
plat = 1;
} else {// 평탄한 부분
plat++;
}
}
if (check) {
ans++;
}
}
//
for (int i = 0; i < n; i++) {
int cur;
int befo;
int plat = 1;
boolean check = true;
out: for (int j = 1; j < n; j++) {
cur = map[i][j];
befo = map[i][j - 1];
if (Math.abs(cur - befo) > 1) {
check = false;
break;// 2이상 차이나는 부분
} else if (cur < befo) {// 내리막길
for (int k = 0; k < x; k++) {
if (k + j >= n) {// 범위체크
check = false;
break out;
}
if (cur != map[i][j + k]) {// 현값하고 앞에 탐색값이 다르면 탈출
check = false;
break out;
}
}
j = j + (x - 1);
plat = 0;
} else if (cur > befo) {// 오르막길
if (plat < x) {
check = false;
break;
}
plat = 1;
} else {// 평탄한 부분
plat++;
}
}
if (check) {
ans++;
}
}
System.out.println(ans);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준 - 2638] 골드4 - 치즈 (bfs) (0) | 2020.10.29 |
---|---|
[백준 - 3190] 골드5 - 뱀 (0) | 2020.10.29 |
[백준 - 2800] 골드5 - 괄호 제거 (문자열) (0) | 2020.10.25 |
[백준 - 5052] 골드4 - 전화번호 목록(문자열) (0) | 2020.10.25 |
[백준 - 9935] 골드4 - 문자열 폭발 (0) | 2020.10.25 |