hye-log

[SWEA]1209번 Sum(JAVA) 본문

CodingTest/SWEA

[SWEA]1209번 Sum(JAVA)

iihye_ 2023. 8. 7. 20:11

0. 문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

1. 문제 설명

1) 10개의 테스트 케이스가 주어질 때, 100*100 2차원 배열에서 각 행의 합, 각 열의 합, 각 대각선의 합 중 최대값 구하기

 

2. 입출력

// input
1
13 24 13 24 1 7 24 11 22 18 22 16 24 8 15 28 9 24 14 14 28 18 17 9 3 29 22 12 28 2 25 6 11 26 14 19 3 26 13 6 23 3 3 29 13 25 4 27 8 25 28 8 9 17 28 13 24 27 9 25 21 20 6 16 28 5 22 11 9 29 13 26 28 2 11 10 14 14 5 11 26 9 15 3 23 9 8 11 12 6 9 18 6 14 28 21 24 24 20 12
20 28 29 21 27 13 29 16 6 28 5 7 13 20 7 1 11 1 23 12 4 9 27 19 26 2 21 2 1 18 4 20 6 4 18 9 20 3 28 28 1 21 1 2 11 7 20 15 7 29 14 7 15 10 29 24 2 25 29 3 11 9 17 6 2 17 17 11 7 20 26 10 8 1 15 10 2 29 7 9 17 8 25 28 29 12 28 19 3 4 17 17 28 9 2 15 14 6 20 3
13 19 28 23 11 1 19 5 5 28 19 18 16 14 26 20 6 12 20 18 16 22 25 21 25 29 3 ............
........
........

// output
#1 1712
#2 1743
.......
.......

 

3. 코드

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

public class swea1209 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		
		for(int t = 1; t <= 10; t++) {
			// 입력
			t = Integer.parseInt(br.readLine());
			int[][] map = new int[100][100];
			for(int i = 0; i < 100; i++) {
				st = new StringTokenizer(br.readLine());
				for(int j = 0; j < 100; j++) {
					map[i][j] = Integer.parseInt(st.nextToken());
				}
			}
			int ans = 0; // 정답
			int temp = 0; // 가로/세로/대각선의 합
			
			// 가로의 최대값
			for(int i = 0; i < map.length; i++) {
				temp = 0;
				for(int j = 0; j < map.length; j++) {
					temp += map[i][j];
				}
				ans = Math.max(ans, temp);
			}
			
			// 세로의 최대값
			for(int i = 0; i < map.length; i++) {
				temp = 0;
				for(int j = 0; j < map.length; j++) {
					temp += map[j][i];
				}
				ans = Math.max(ans, temp);
			}
			
			// 대각선의 합
			temp = 0;
			for(int i = 0; i < map.length; i++) {
				temp += map[i][i];
			}
			ans = Math.max(ans, temp);
			
			temp = 0;
			for(int i = 99; i >= 0; i--) {
				temp -= map[i][i];
			}
			ans = Math.max(ans, temp);
			
			System.out.printf("#%d %d\n", t, ans);
		}
	}
}

 

실행 결과

 

4. 회고

1) for 문 이용하여 각 행, 각 열, 각 대각선의 합 구하여 max로 최대값 구하기

 

5. Github

https://github.com/iihye/Algorithm/blob/main/SWEA/swea1209.java

728x90

'CodingTest > SWEA' 카테고리의 다른 글

[SWEA]1952번 수영장(JAVA)  (0) 2023.08.08
[SWEA]1228번 암호문1(JAVA)  (0) 2023.08.08
[SWEA]1247번 최적 경로(JAVA)  (0) 2023.08.07
[SWEA]1225번 암호생성기(JAVA)  (0) 2023.08.07
[SWEA]1218번 괄호 짝짓기(JAVA)  (0) 2023.08.07
Comments