코딩 익숙해지기
[JAVA][SW Expert Academy] 1209. Sum 본문
[SW Expert Academy] 1209. Sum
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 내용
다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라. 다음과 같은 5X5 배열에서 최댓값은 29이다. ![]() [제약 사항] 총 10개의 테스트 케이스가 주어진다. 배열의 크기는 100X100으로 동일하다. 각 행의 합은 integer 범위를 넘어가지 않는다. 동일한 최댓값이 있을 경우, 하나의 값만 출력한다. [입력] 각 테스트 케이스의 첫 줄에는 테스트 케이스 번호가 주어지고 그 다음 줄부터는 2차원 배열의 각 행 값이 주어진다. [출력] #부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다. |
해결 순서
1. 배열의 크기는 100 x 100 : 2차원 배열 각 행/열에 입력
2. 총 합 개수는 100 (가로 합 개수) + 100 (세로 합 개수) + 2 (대각선 합 개수)
3. 각 합 개수를 저장할 ArrayList 선언
4. 세로 합 # 0~99 : [i, j] + [i, j+1] + [i, j+2] + ... + [i, j+99]
5. 가로 합 # 100~199 : [99-j, i] + [99-(j+1), i] + [99-(j+2), i] + ... + [99-(j+99), i]
6. 대각선 합 # 200 : i == j 일 때 [i, j]
7. 대각선 합 # 201 : i + j == 99 일 때 [i, j]
8. 최댓값 max를 찾아 리턴
문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import java.util.ArrayList;
import java.util.Scanner;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T = 10;
for(int test_case = 1; test_case <= T; test_case++)
{
int TC = sc.nextInt();
int[][] arr = new int[100][100];
ArrayList<Integer> arrListSum = new ArrayList<>();
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
arr[i][j] = sc.nextInt();
}
}
// ArrayList 초기화
for (int i = 0; i < 202; i++) {
arrListSum.add(i, 0);
}
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
arrListSum.set(i, arrListSum.get(i) + arr[i][j]); // 세로 합
arrListSum.set(i+100, arrListSum.get(i+100) + arr[99-j][i]); // 가로 합
if (i == j) { // 대각선 합
arrListSum.set(200, arrListSum.get(200) + arr[i][j]);
} else if (i + j == 99) { // 대각선 합
arrListSum.set(201, arrListSum.get(201) + arr[i][j]);
} else {
continue;
}
}
}
int max = arrListSum.get(0);
for (int i = 0; i < arrListSum.size(); i++) {
if (arrListSum.get(i) >= max) {
max = arrListSum.get(i);
}
}
System.out.println("#" + TC + " " + max);
}
}
}
|
cs |
'알고리즘 > SWEA' 카테고리의 다른 글
[JAVA][SW Expert Academy] 1211. Ladder2 (0) | 2022.08.13 |
---|---|
[JAVA][SW Expert Academy] 1210. Ladder1 (0) | 2022.08.11 |
[JAVA][SW Expert Academy] 1208. Flatten (0) | 2022.08.11 |
[JAVA][SW Expert Academy] 1206. View (0) | 2022.08.11 |
[JAVA][SW Expert Academy] 1204. 최빈수 구하기 (0) | 2022.08.10 |