작성
·
150
0
import java.util.Scanner;
public class Main {
int[] dx = {-1,0,1,0};
int[] dy = {0,1,0,-1};
public int solution(int n, int[][] input) {
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 nx = input[i][j]+dx[k];
int ny = input[i][j]+dy[k];
if(nx>=0 && ny>=0 && nx<n && ny<n && input[nx][ny]>=input[i][j]) {
flag = false;
break;
}
}
if(flag) answer++;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] input = new int[n][n];
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
input[i][j]=sc.nextInt();
}
}
System.out.println(T.solution(n, input));
sc.close();
}
}
영 관련 문의는 1:1 문의하기를 이용해주세요.답변 1
0
for(int k=0;k<4;k++) {
int nx = input[i][j]+dx[k];
int ny = input[i][j]+dy[k];
if(nx>=0 && ny>=0 && nx<n && ny<n && input[nx][ny]>=input[i][j]) {
flag = false;
break;
}
3번째 for문에서는 상,하,좌,우로 탐색을 하시려면
input[i][j] 에 dx나 dy값을 더하는게 아니라
i 또는 j를 직접적으로 바꿔줘야 위치가 변하므로
int nx = i + dx[k];
int ny = i + dy[k]; 로 바꿔줘야 할 것 같습니다.
지금 작성해주신코드는 현재 선택된 봉우리값에 dx,dy값을 더하는것이라 위치가 변하지는 않습니다.