[swexpert] 2001. 파리퇴치 (python, java, D2)

728x90
반응형

현재 위치로 부터 m칸의 크기 안에 있는 위치의 값들을 모두 더해준다 

모든 위치를 검사해준다 

 

범위는 전체 배열 길이-m까지 시작위치로 잡고 해당 위치에서 가로 세로 현재위치+m위치까지 검사해준다

 

1. 파이썬 풀이

t=int(input())
for i in range(1,t+1):
    result = 0
    n,m=map(int,input().split())
    arr=[]
    for _ in range(n):
        a=list(map(int,input().split()))
        arr.append(a)

    for y in range(0,n-m+1): //현재 위치, 여기서부터 m칸을 검사하므로 인덱스가 넘어가지 않게 주의
        for x in range(0,n-m+1):
            sum=0
            for yy in range(y,y+m): // 현재 위치를 포함하여 m칸 검사한다
                for xx in range(x,x+m):
                    sum+=arr[yy][xx]
            if sum>result:
                result=sum
    print(f'#{i} {result}')


2. 자바 풀이 

 


import java.util.Arrays;
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 < arr.length; i++) {
				for (int j = 0; j < arr.length; j++) {
					arr[i][j]=sc.nextInt();
				}
				
			}
//			System.out.println(Arrays.deepToString(arr));
			int result=Integer.MIN_VALUE;
			for (int i = 0; i <= arr.length-m; i++) {
				for (int j = 0; j <= arr.length-m; j++) {
					int sum=0;
					for (int j2 = i; j2 < i+m; j2++) {
						for (int k = j; k < j+m; k++) {
							sum+=arr[j2][k];
						}
					}
					
					if(result<sum)result=sum;
				}
			}
			
			
			System.out.printf("#%d %d\n",tc,result);
		}
		sc.close();
	}
	
	
}
	


728x90
반응형
TAGS.

Comments