본문 바로가기
알고리즘/SWEA

[SWEA / 파리 퇴치 / JAVA]

by KDW999 2023. 5. 15.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PzOCKAigDFAUq 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

문제 접근

2차원 배열 값 정하고 M만큼 돌리면 되겠다라는 생각은 바로 들었는데 수식을 어떻게 짜야할지 생각하는데 시간이 걸렸다.

 

원하는 공간만큼 파리채를 찍기 위해선 시작 지점(i, j)과 파리채의 크기(M)만큼 움직일 지점(i2, j2)가 필요하다.

이걸 4중 for문으로 작성하고 가로 세로를 M 사이클만큼 돌면 그 때의 합을 이전 합과 비교해서 가장 큰 값을 출력해준다.

 

import java.util.*;
import java.io.*;

public class Solution {
	public static void main(String[] args) throws IOException {
	 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	 
	 int T = Integer.parseInt(br.readLine());
	 
	 for(int t=1; t<=T; t++) {
		 StringTokenizer st = new StringTokenizer(br.readLine());
		 int N = Integer.parseInt(st.nextToken()); 
		 int M = Integer.parseInt(st.nextToken());
		 
		 int[][] arr =  new int[N][N];
		 
		 for(int i=0; i<N; i++) {
			 st = new StringTokenizer(br.readLine());
			 for(int j=0; j<N; j++) arr[i][j] = Integer.parseInt(st.nextToken());
		 }
		 int max = 0;
		 for(int i=0; i<=N-M; i++) { // M만큼 돌 공간은 남겨줘야함
			 for(int j=0; j<=N-M; j++) {
				 int sum = 0;
				 for(int i2=0; i2<M; i2++) { // M만큼 돌기
					 for(int j2=0; j2<M; j2++) {
						 sum += arr[i+i2][j+j2];
					 }
				 }
				 max = Math.max(max, sum);
			 }
		 }
		 System.out.println("#"+t+ " "+ max);
	 }
	}
}

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA / 농작물 수확하기 / JAVA]  (0) 2023.05.17
[SWEA / N-Queen / JAVA]  (0) 2023.05.16
[SWEA / Flattern / JAVA]  (0) 2023.05.14
[SWEA / View / JAVA]  (0) 2023.05.11
[SWEA / 구구단 걷기 / JAVA]  (1) 2023.05.11

댓글