[SWEA 1209번] Sum with Java

guswls·2024년 5월 14일
0

알고리즘

목록 보기
35/39
post-custom-banner

문제




코드


import java.util.*;
import java.io.*;

class Solution {
	public static void main(String args[]) throws Exception {
		//System.setIn(new FileInputStream("input.txt"));
		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차원 배열에 넣지 않더라도 구할 수 있을 것 같긴 하지만, 지금 당장 필요한 구현은 아니기에 건너뛴다.


참고자료


profile
안녕하세요
post-custom-banner

0개의 댓글