문제
다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라.
다음과 같은 5X5 배열에서 최댓값은 29이다.
제약 사항
총 10개의 테스트 케이스가 주어진다.
배열의 크기는 100X100으로 동일하다.
각 행의 합은 integer 범위를 넘어가지 않는다.
동일한 최댓값이 있을 경우, 하나의 값만 출력한다.
입력
각 테스트 케이스의 첫 줄에는 테스트 케이스 번호가 주어지고 그 다음 줄부터는 2차원 배열의 각 행 값이 주어진다.
출력
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.
풀이
정말 간단하게 모든 방향에 대한 합을 구해서 가장 큰 값을 출력하였다.
import java.util.Scanner;
public class Sum {
public static int arr[][];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int test_case = 1; test_case <= 10; test_case++) {
arr = new int [100][100];
int max = 0;
int tc = sc.nextInt();
for (int i = 0; i < 100; i++)
for (int j = 0; j < 100; j++)
arr[i][j] = sc.nextInt();
for (int i = 0; i < 100; i++) {
tc = 0;
for (int j = 0; j < 100; j++)
tc += arr[i][j];
if (tc > max) max = tc;
}
for (int i = 0; i < 100; i++) {
tc = 0;
for (int j = 0; j < 100; j++)
tc += arr[j][i];
if (tc > max) max = tc;
}
tc = 0;
for (int i = 0; i < 100; i++)
tc += arr[i][i];
if (tc > max) max = tc;
tc = 0;
for (int i = 0; i < 100; i++)
tc += arr[i][99 - i];
if (tc > max) max = tc;
System.out.println("#" + test_case + " " + max);
}
}
}
'코딩테스트 > SWEA' 카테고리의 다른 글
[JAVA] SWEA 1210번 Ladder1 (0) | 2021.07.27 |
---|---|
[JAVA] SWEA 1220번 Magnetic (0) | 2021.07.27 |
[JAVA] SWEA 1208번 Flatten (0) | 2021.07.26 |
[JAVA] SWEA 1206번 View (0) | 2021.07.26 |
[JAVA] SWEA 1204번 최빈수 구하기 (0) | 2021.07.26 |
댓글