문제9 :
N*N 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중에서 가장 큰 합을 출력하시오
입력예제
3
13 16 28
31 19 11
21 24 17
출력예제
68
소스코드 :
import java.util.*;
class Main {
public int solution(int n, int[][] arr) {
int answer = Integer.MIN_VALUE;
int maxRow, maxColumn;
for(int i=0; i<n; i++) {
maxRow = maxColumn = 0;
for(int j=0; j<n; j++) {
maxRow += arr[i][j];
maxColumn += arr[j][i];
}
answer = Math.max(answer, maxRow);
answer = Math.max(answer, maxColumn);
}
int diagonal1, diagonal2;
diagonal1 = diagonal2 = 0;
for(int i=0; i<n; i++) {
diagonal1 += arr[i][i];
diagonal2 += arr[i][n-i-1];
}
answer = Math.max(answer, diagonal1);
answer = Math.max(answer, diagonal2);
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] arr = new int[n][n];
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
arr[i][j] = sc.nextInt();
}
}
System.out.println(T.solution(n, arr));
}
}
문제10 :
N*N 격자판이 주어지면 격자 각 가장자리를 0으로 초기화시키고
(설명하자면
5 2
3 4
가 주어지면
0 0 0 0
0 5 2 0
0 3 4 0
0 0 0 0
이 된다. )
여기서 각 격자판 숫자 중 자신의 상하좌우의 숫자보다 큰 숫자의 개수를 구하여라
위 예시의 정답은 2개이다. (5와 4)
소스코드 :
import java.util.*;
class Main {
int[] dx = {0, 1, 0, -1};
int[] dy = {1, 0, -1, 0};
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 == true) answer++;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] arr = new int[n][n];
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
arr[i][j] = sc.nextInt();
}
}
System.out.println(T.solution(n, arr));
}
}
풀이 :
방향 배열을 작성한다. (dx행 dy열)
// 동, 남, 서, 북
int[] dx = {0, 1, 0, -1};
int[] dy = {1, 0, -1, 0};
이후 for문과 함께
nx = i + dx[k]
ny = j + dy[k]
arr[nx][ny]
와 같이 사용한다.
'Java 코딩테스트 공부 > Java 알고리즘 공부' 카테고리의 다른 글
Java 투포인터, 슬라이딩 윈도우 알고리즘 1 (0) | 2022.08.08 |
---|---|
Java 배열 파트 알고리즘4 (0) | 2022.08.07 |
Java 배열 파트 알고리즘2 (0) | 2022.08.05 |
Java 배열 파트 알고리즘1 (0) | 2022.08.04 |
자바 배열 파트 알고리즘2 / 7월 13일 (0) | 2022.07.13 |