반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 2001번 파리퇴치 자바(Java)

 

2. 코드

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

public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		
		for(int i=1;i<=T;i++) {
			int N = sc.nextInt();
			int M = sc.nextInt();
			int[][] arr = new int[N][N];
			
			int max = 0;
			
			//배열 입력
			for(int j=0;j<N;j++) {
				for(int k=0;k<N;k++) {
					arr[j][k] = sc.nextInt();
				}
			}
			
			for(int a=0;a<N-M+1;a++) {
				for(int b=0;b<N-M+1;b++) {
					int sum = 0;
					for(int c=0;c<M;c++) {
						for(int d=0;d<M;d++) {
							sum += arr[a+c][b+d];
						}
					}
					if(max<sum) {
						max = sum;
					}
				}
			}
			
		System.out.printf("#%d %d",i,max);
		System.out.println("");
		}
	}
}

- 2805번 농작물 수확하기를 풀면 쉽게 풀 수 있다.

- 위의 코드는 M만 움직임에 따라 순서만 이중포문을 설정하고 더해주는 방법이다.

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 ans = 0;
            for(int i = 0; i <= N-M; i++) {
                for(int j = 0; j <= N-M; j++) {
                    int sum = 0;
                    for(int m = i; m < i+M; m++    ) {
                        for(int n = j; n < j+M; n++) {
                            sum += arr[m][n];
                        }
                    }
                    ans = Math.max(ans, sum);
                }
            }
            System.out.println("#%d %d",tc,ans);
        }
    }
}

- 위의 코드는 M과 같이 움직이면서 더하는 방법이다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기