UpDown Dev Story
알고리즘 연습 - 봉우리 본문
아래 강의를 보면서 연습하고 기록하고 있습니다
문제
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int inputInt = sc.nextInt(); // 숫자 입력받음
int[][] inputArrXY = new int[inputInt][inputInt];
for (int i = 0; i < inputInt; i++) { // for loop 돌면서 숫자들 배열에 넣는다
for (int j = 0; j < inputInt; j++) {
inputArrXY[i][j] = sc.nextInt();
}
}
int count = 0;
for (int i = 0; i < inputInt; i++) {
for (int j = 0; j < inputInt; j++) {
boolean flag = true;
// 상
if (i != 0 && inputArrXY[i][j] < inputArrXY[i - 1][j]) { // 가장자리는 0으로 초기화 되고 격자판에서 위에 숫자가 자신보다 큰수인지 확인
flag = false;
}
// 하
if (i != inputInt - 1 && inputArrXY[i][j] < inputArrXY[i + 1][j]) { // 가장자리는 0으로 초기화 되고 격자판에서 아래에 숫자가 자신보다 큰수인지 확인
flag = false;
}
//좌
if (j != 0 && inputArrXY[i][j] < inputArrXY[i][j - 1]) { // 가장자리는 0으로 초기화 되고 격자판에서 위에 왼쪽에 숫자가 자신보다 큰수인지 확인
flag = false;
}
//우
if (j != inputInt - 1 && inputArrXY[i][j] < inputArrXY[i][j + 1]) { // 가장자리는 0으로 초기화 되고 격자판에서 오른쪽에 숫자가 자신보다 큰수인지 확인
flag = false;
}
if (flag) {
count++;
}
}
}
System.out.println(count);
}
}
강사님 소스코드
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 nx=i+dx[k];
int ny=j+dy[k];
if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=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));
}
}
'Algorithm' 카테고리의 다른 글
알고리즘 연습 - 공통원소구하기( Two Pointers ) (0) | 2021.06.23 |
---|---|
알고리즘 연습 - 두 배열 합치기 (0) | 2021.06.22 |
알고리즘 연습 - 격자판 최대합 (0) | 2021.05.31 |
알고리즘 연습 - 등수구하기 (0) | 2021.05.26 |
알고리즘 연습 - 점수계산 (0) | 2021.05.26 |
Comments