1. 코드
import java.util.*;
import java.util.function.Predicate;
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 swatterTotal = 0; // 한 테스트에서 파리채로 파리 때려 잡는 경우의 수를 저장
ArrayList<Integer> list = new ArrayList<>();
int [][] flies = new int[N][N];
for (int j = 0; j < N; j++) { // 공간 마다 파리의 갯수 집어넣기 by 2차원 배열
for (int k = 0; k < N; k++) {
flies[j][k] = sc.nextInt();
}
}
for (int l = 0; l <= N-M; l++) { // 파리채는 배열 사이를 이동해야 하므로 for문으로 한번 더 감싼다.
for (int t = 0; t <= N - M; t++) { // 열(가로)를 먼저 훑도록 하였다.
for (int j = l; j < M + l; j++) { // 가로, 세로가 움직인다.
for (int k = t; k < M + t; k++) {
swatterTotal += flies[j][k]; // 경우의 수마다의 때려 잡은 파리의 수 총합이 적힌다.
}
}
list.add(swatterTotal); // 때려잡은 파리 총합 경우의 수를 모두 저장한다.
swatterTotal = 0;
}
}
int MAX = list.stream().mapToInt(x->x).max().orElse(0); // 경우의 수 중 때려잡은 파리 수가 제일 높은 녀석을 호출
System.out.println("#"+i+ " " + MAX); // 반환
list.clear();
}
}
}
참고
1-(4) 2 차원 배열 순회 및 자동 초기화 방법 :: 정신과 시간의 방 (tistory.com)
'알고리즘 > 문제 풀이' 카테고리의 다른 글
SWEA 1986. 지그재그 숫자 (0) | 2023.05.11 |
---|---|
SW 1989. 초심자의 회문 찾기 (0) | 2023.05.10 |
SW 2005 파스칼의 삼각형 (0) | 2023.05.09 |
SW Expert Academy 2007. 패턴 마디의 길이 (0) | 2023.05.09 |
SW D2 1926. 간단한 369게임 (0) | 2023.05.08 |