Algorithm

[알고리즘]SWEA_2001.파리퇴치

이수밈 2023. 8. 9. 23:32

https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYlI4m2qFyEDFASe&contestProbId=AV5PzOCKAigDFAUq&probBoxId=AYnN8ITK6GkDFARi&type=PROBLEM&problemBoxTitle=1%EC%A3%BC%EC%B0%A8&problemBoxCnt=9

 

 

import java.util.Arrays;
import java.util.Scanner;

public class Swea_파리퇴치 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();

		for (int test_case = 1; test_case <= T; test_case++) {
			int N = sc.nextInt();
			int M = sc.nextInt();
			int[][] flyarray = new int[N][N];
			int[] sumarray = new int[(N - M + 1) * (N - M + 1)];

			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					flyarray[i][j] = sc.nextInt();
				}
			}
			int n=0;
			for (int a = 0; a < N - M + 1; a++) {
				for (int b = 0; b < N - M + 1; b++) {
					int sum = 0;
					for (int i = a; i < M + a; i++) {
						for (int j = b; j < M + b; j++) {
							sum = sum + flyarray[i][j];
						}
					}
					sumarray[n++] = sum;
				}
			}

			Arrays.sort(sumarray);
			System.out.println("#" + test_case + " " + sumarray[sumarray.length - 1]);
		}

	}
}

포인트

  • 굳이 max를 배열에 집어넣어서 추출하지 않아도 됐었다..
  • N-M+1은 안에 M x M 배열이 N x N 배열안에서 이동하는 횟수를 나타낸다.
  • sumarray[n++]가 개인적으로 내 코드의 포인트라고 생각됨.
    • 중간에 for문을 하나 더 넣어주면 n은 움직이지만, 사실상 다른 변수들이 고정되어 있는 상태에서 n이 변하기 때문에 의미없는 값만 출력되었다. (동일한 값만 출력)
  • 코드 봐준 제잌에게 심심한 감사의 말씀. 꾸벅