mun dev

[SWEA] D2 2001 파리퇴치 자바(Java) 본문

알고리즘/SWEA

[SWEA] D2 2001 파리퇴치 자바(Java)

mndev 2023. 11. 16. 21:41

문제 링크

 

SW Expert Academy

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

swexpertacademy.com

 

풀이

n-m+1까지 for문 돌린 후 findMax메서드를 만들어 현재값+m까지 이중 for문을 돌려 sum을 구한다.

sum 중 max를 구하고 max값을 출력하면 된다.

 

풀이 코드

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

public class Solution {
	public static int n, m, max = 0;
	public static int arr[][];
	public static int result = 0;

	public static void main(String[] args) throws NumberFormatException, IOException {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();

		for (int test_case = 1; test_case <= T; test_case++) {
			n = sc.nextInt();
			m = sc.nextInt();
			arr = new int[n][n];
			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 + 1; i++) {
				for (int j = 0; j < n - m + 1; j++) {
					findMax(i, j);
				}
			}
			System.out.println("#" + test_case + " " + max);
		}
	}

	public static void findMax(int x, int y) {
		int sum = 0;
		for (int i = x; i < x + m; i++) {
			for (int j = y; j < y + m; j++) {
				sum += arr[i][j];
			}
			if (max < sum) {
				max = sum;
			}
		}
	}
}