SWE 2001(파리퇴치)(D2)

2001 파리퇴치 (D2)

문제 이해

NxN의 배열 안에 숫자가 있는데 MxM의 파리채를 한번 내리쳐서 최대한 많은 파리를 죽이고자 한다.

죽은 파리의 개수를 구하자.

  1. NXN 크기의 배열에 값을 담아.
  2. MxM 크기의 파리채라고 가정. 하나씩 다 완전탐색
  3. 그 중 가장 값의 크기가 큰 걸 출력!
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {
	
	public static void main(String args[]) throws Exception{
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(bf.readLine());
		
		// 값 담기
		int i,j,k,l;
		int t = 1;
		while(T-- >0 ) {
			
			StringTokenizer st = new StringTokenizer(bf.readLine());
			int N = Integer.parseInt(st.nextToken());
			int M = Integer.parseInt(st.nextToken());
			
			int [][]map = new int[N][N];
			
			// 입력 받기 
			for(i = 0; i < N; i++) {
				StringTokenizer rowLine = new StringTokenizer(bf.readLine());
				for(j = 0 ; j < N; j++) {
					map[i][j] = Integer.parseInt(rowLine.nextToken());		
				}
			}

			
			// 계산 하기 
			int result = 0;
			for(i = 0 ; i <N-M+1; i++) {
				for (j = 0 ; j < N-M+1; j++) {
					int total = 0;
					for(k=0; k<M; k++) {
						for(l=0; l<M; l++) {
							total += map[i+k][j+l];
						}
					}
					if(total > result)
						result = total;	
				}
			}
			
			System.out.println("#"+t+" " + result);
			t++;
		}
	};
}
				



참고자료

SWE selfStudyBook(3)

0%