문제

* 해당 문제의 모든 저작권은 SWEA 측에 있으며 본 블로그는 SWEA  약관을 위배하지 않음을 명시합니다.*

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

 

SW Expert Academy

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

swexpertacademy.com


풀이

DP로 풀 수 있을 거 같기도 하고, 반복문 자체를 줄일 수도 있을 거 같은 문제였습니다.

다만 해당 문제의 테스트 케이스는 작은 수만을 요구해서 따로 복잡하게 풀지 않았습니다.

수가 커진다면 반복문을 줄이는 게 맞을 거 같아요.


소스 코드

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);

		int T = sc.nextInt();

		for (int test_case = 1; test_case <= T; test_case++) {
			int answer = 0;
			
			int[][] arr = new int[15][15];
			int N = sc.nextInt();
			int M = sc.nextInt();
			int max = 0;
			
			for(int i = 0; i < N; i++) {
				for(int j = 0; j < N; j++) {
					arr[i][j] = sc.nextInt();
				}
			}
			
			for(int i = 0; i <= N - M; i++) {
				for(int j = 0; j <= N - M; j++) {
					int sum = 0;
					for(int x = i; x < M + i; x++) {
						for(int y = j; y < M + j; y++) {
							sum += arr[x][y];
						}
					}
					if (sum > max) {
						max = sum;
					}
				}
			}
			answer = max;
			
			System.out.println("#" + test_case + " " + answer);
		}
	}
}

+ Recent posts