https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PzOCKAigDFAUq
문제 접근
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 |
댓글