import java.util.*;
class Main {
// 현재 위치를 기준으로 상, 하, 좌, 우 기준점
// dx = -1, dy = 0이면 상
// 대각선까지 고려하는 문제면 4개 더 추가
int[] dx = {-1, 0, 1, 0};
int[] dy = {0, 1, 0, -1};
public int solution(int n, int[][] arr) {
int answer = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
boolean flag = true;
// dx, dy가 0~3까지임으로 k < 4
// 대각선이면 k < 7
for(int k = 0; k < 4; k++) {
int idx = i + dx[k];
int idy = j + dy[k];
// 가장자리 0을 앞에 적어야 인덱스 오류가 안남
if(idx >= 0 && idx < n && idy >= 0 && idy < n && arr[idx][idy] >= arr[i][j]) {
// 1개라도 충족이 안되면 봉우리가 아니므로 break
flag = false;
break;
}
}
// flag가 참이면 answer++
if(flag) {
answer++;
}
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int arr[][] = new int[n][n];
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
arr[i][j] = kb.nextInt();
}
}
System.out.print(T.solution(n, arr));
}
}
import java.util.*;
class Main {
int[] dx = {-1, 0, 1, 0};
int[] dy = {0, 1, 0, -1};
public int solution(int n, int[][] arr) {
int answer = 0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
boolean flag = true;
for(int k = 0; k < 4; k++) {
int idx = i + dx[k];
int idy = j + dy[k];
if(idx >= 0 && idx < n && idy >= 0 && idy < n && arr[idx][idy] >= arr[i][j]) {
flag = false;
break;
}
}
if(flag) {
answer++;
}
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int arr[][] = new int[n][n];
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
arr[i][j] = kb.nextInt();
}
}
System.out.print(T.solution(n, arr));
}
}
'코딩테스트 > 기초' 카테고리의 다른 글
24. 멘토링 (1) | 2024.12.15 |
---|---|
23. 임시반장 정하기 (1) | 2024.12.14 |
21. 격자판 최대합 (0) | 2024.12.11 |
20. 등수구하기 (0) | 2024.12.10 |
19. 점수계산 (0) | 2024.12.10 |