노력만이 살길!/알고리즘

2001 파리 퇴치 (SW Expert Academy )

갱스타 2022. 2. 5. 22:06

  • 구하는것 : 파리채로 때려서 잡았을때, 가장 많이 잡을 수 있는 파리의 수.
  • 입력 : 테케T, 배열의 크기 N, 파리채의 크기 M
  • 출력 : max 파리의 수
  • 방법 : N*N 배열을 2중 반복문을 사용하여 순차적으로 탐색한다. 단, 파리채의 크기를 미리 고려하여 map을 빠져나가지 않는 만큼만.

https://swexpertacademy.com/main/solvingProblem/solvingProblem.do

 

public class SWEA_2001 {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int T=scan.nextInt();
		for(int test_case=1;test_case<T+1;test_case++) {
			int sum=0; //잡은 파리의 개수의 합.
			int max=0;//맥스
			int N=scan.nextInt();	//맵의 크기
			int M=scan.nextInt(); //파리채의 크기
			int xt,yt;
			int map[][]=new int[N][N];
			for(int i=0;i<N;i++) {
				for(int j=0;j<N;j++) {
					map[i][j]=scan.nextInt();
				}
			}
			for(int i=0;i<N-M+1;i++) {
				for(int j=0;j<N-M+1;j++) {
					sum=0;
					//M의 수만큼 반복한다.
					for(int k=0;k<M;k++) {
						for(int p=0;p<M;p++) {
							xt=i+k;
							yt=j+p;
							sum=sum+map[xt][yt];
						}
					}
					if(max<sum) {
						max=sum;
					}
				}
			}
			System.out.printf("#%d %d\n",test_case,max);
		}
	}
}