인프런 커뮤니티 질문&답변
오답 원인을 모르겠습니다..
작성
·
219
0
import java.util.Scanner;
public class Main {
public static void solution(int n, int[][] numArr) {
//미리 0을 채워 넣으면 가장 편하겠지만 공간 낭비가 생기니 채워 넣지 않고 풀어보자.
int answer = 0;
boolean chk;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
chk = true;
//최상단은 상 검사 불필요, 최하단은 하 검사 불필요
//맨 좌측(i==0)은 왼쪽 검사 불필요, 맨 우측(i==n-1)은 오른쪽 검사 불필요
int currentNum = numArr[i][j];
// 맨 위에 자리가 아니라면 위에 항목 검사, 맨 아래 자리가 아니라면 아래 항목 검사 -> 이런 식으로 처리하는게 더 효율적!
if(i > 0 && currentNum <= numArr[i-1][j]) chk = false;
if(i < n-1 && currentNum <= numArr[i+1][j]) chk = false;
if(j > 0 && currentNum <= numArr[i][j-1]) chk = false;
if(j > n-1 && currentNum <= numArr[i][j+1]) chk = false;
if(chk) answer ++;
}
}
System.out.println(answer);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] numArr = new int[n][n];
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
numArr[i][j] = sc.nextInt();
}
}
solution(n, numArr);
}
}
봉우리가 아닌 경우 false를 줘서 판별하는 방식으로 해서
예시 답은 잘 나오는거 같은데 결과는 계속 오답이라고 나와서
원인을 못 찾고 있어서 질문 드립니다! 




