Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Archives
Today
Total
관리 메뉴

UpDown Dev Story

알고리즘 연습 - 격자판 최대합 본문

Algorithm

알고리즘 연습 - 격자판 최대합

updown 2021. 5. 31. 23:52

아래 강의를 보면서 연습하고 기록하고 있습니다

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com

 

문제

소스코드

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int inputInt = sc.nextInt(); // 숫자 입력받음
		int[][] inputArrXY = new int[inputInt][inputInt];

		for (int i = 0; i < inputInt; i++) { // for loop 돌면서 숫자들 배열에 넣는다
			for (int j = 0; j < inputInt; j++) {
				inputArrXY[i][j] = sc.nextInt();
			}
		}

		int result = 0;
		for (int i = 0; i < inputArrXY.length; i++) {
			int tmp = 0;
			int tmp2 = 0;
			for (int j = 0; j < inputArrXY.length; j++) {
				tmp += inputArrXY[i][j]; // 가로 값들 누적
				tmp2 += inputArrXY[j][i]; // 세로 값들 누적
			}

			result = Math.max(result, tmp); // 가로 값 누적한것과 result 비교하여 더 큰것 result에 할당
			result = Math.max(result, tmp2); // 세로 값 누적한것과 result 비교하여 더 큰것 result에 할당
		}

		int tmp4 = 0;
		int tmp5 = 0;
		for (int i = 0; i < inputArrXY.length; i++) {
			tmp4 += inputArrXY[i][i]; //왼쪽 위 모서리에서 오른쪽 아래 모서리까지 누적(대각선)
			tmp5 += inputArrXY[i][inputArrXY.length - i - 1]; //오른쪽 오래 모서리에서 왼쪽 위 모서리까지 누적(대각선)
		}

		result = Math.max(result, tmp4); // 대각선 값 누적한것과 result 비교하여 더 큰것 result에 할당
		result = Math.max(result, tmp5); // 대각선 값 누적한것과 result 비교하여 더 큰것 result에 할당

		System.out.println(result); // 출력
	}
}
Comments