1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [D2_2001] ํŒŒ๋ฆฌ ํ‡ด์น˜

import java.util.Scanner;

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

		int T = sc.nextInt();

		for (int tc = 1; tc <= T; tc++) {
			int N = sc.nextInt();
			int M = sc.nextInt();

			// ์ž…๋ ฅ
			int[][] arr = new int[N][N];

			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					arr[i][j] = sc.nextInt();
				}
			}

			int max = 0;

			// ํƒ์ƒ‰
			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					
					int sum = 0;
					
					// M*M ํŒŒ๋ฆฌ์ฑ„ ํƒ์ƒ‰
					for (int a = 0; a < M; a++) {
						for (int b = 0; b < M; b++) {

							int nx, ny;
							nx = j + b;
							ny = i + a;

							// ๋ฒ”์œ„ ๋„˜์–ด๊ฐ€๋ฉด ์ค‘์ง€
							if (nx < 0 || nx >= N || ny < 0 || ny >= N) {
								break;
							} else {
								sum += arr[ny][nx];
							}
						}
					}
					
					// ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ
					max = Math.max(max, sum);
				}
			}

			// ์ถœ๋ ฅ
			System.out.println("#" + tc + " " + max);

		}
	}
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

์ฒ˜์Œ์— TestCase๋งŒ ๋ณด๊ณ  3๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€์•ผ์ง€ ํ•˜๊ณ  ์‹ ๋‚˜์„œ ํ–ˆ๋Š”๋ฐ..
๋ฐ”๋ณด์˜€๋‹ค.. ใ…‹ใ…‹ใ…‹ ๋ฌธ์ œ๋ฅผ ์ž์„ธํžˆ ์•ˆ ์ฝ์€ ๋ฐ”๋ณด..
๊ทธ๋ž˜์„œ ๋ฐฉํ–ฅํƒ์ƒ‰๋ณด๋‹ค ์ฐจ๋ผ๋ฆฌ ์ด์ค‘ for๋ฌธ์œผ๋กœ ํŒŒ๋ฆฌ์ฑ„๋ฅผ ํƒ์ƒ‰ํ•˜์ž๊ณ  ํ–ˆ๋‹ค.
์‚ฌ์‹ค ํ’€๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์–ด๋งˆ๋ฌด์‹œ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.. O(n^4) ์ธ๊ฐ€..?
์ด๊ฑด ๋งํ•œ๊ฑฐ๋‹ค ์บฌ์บฌ์ป„ ๋‚˜์ค‘์— ๋‹ค๋ฅธ ์ฝ”๋“œ ์ฐธ๊ณ ํ•ด์„œ ํ•œ ๋ฒˆ๋” ํ™•์ธํ•ด ๋ด์•ผ๊ฒ ๋‹ค.