코드
import java.util.*;
import java.io.*;
class Solution {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
for (int t = 0; t < 10; t++) {
br.readLine();
int[][] arr = new int[100][100];
for (int i = 0; i < 100; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int j = 0; j < 100; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
int max = 0;
for (int i = 0; i < 100; i++) {
int rowSum = 0;
int colSum = 0;
for (int j = 0; j < 100; j++) {
rowSum += arr[i][j];
colSum += arr[j][i];
}
max = Math.max(max, Math.max(rowSum, colSum));
}
int firstSum = 0;
int secondSum = 0;
for (int i = 0; i < 100; i++) {
firstSum += arr[i][i];
secondSum += arr[99 - i][99 - i];
}
max = Math.max(max, Math.max(firstSum, secondSum));
int ret = max;
sb.append(String.format("#%d %d\n", t + 1, ret));
}
System.out.println(sb);
}
}
문제 이해
- 문제 그대로
100 X 100
배열에서 가로 합, 세로합, 대각선 합 중 최대값을 구하면 된다.
풀이 방법
- 입력을
100 X 100
배열에 넣고, 가로, 세로 합을 구한다.
- 대각선 합 역시 따로 구한 후 가장 큰 값을 출력한다.
핵심 포인트
- 문제 그대로 구현하면 된다. 단, 루프 내부에서 인덱스 쓸 때 헷갈리지 않게 주의하자.
보완할 점 / 느낀 점
- 아마도 코테에서 마주칠 일은 크게 없을 것 같은 유형의 문제였다.
- 굳이 2차원 배열에 넣지 않더라도 구할 수 있을 것 같긴 하지만, 지금 당장 필요한 구현은 아니기에 건너뛴다.
참고자료