반응형
1. 문제 출처
2. 설계
- NxN 영역 안에서 MxM크기의 파리채로 내려쳤을 때 최대로 죽일 수 있는 파리 수를 세는 것이다.
- N은 5~15이며, M은 2~N이다.
- 파리채로 내려칠 공간의 시작과 끝 공간을 정한다.
- 시작은 (0, 0) 이다.
- 끝은 (N, N)에서 M-1회 좌 대각선으로 이동한 위치이다.
- 시작과 끝 위치를 정하면 for을 돌릴 범위가 선정된다 (row, col) 이 위치만큼 파리채로 내려칠 수 있다.
- 이 범위 안에서 가장 많은 파리를 잡은 수를 출력하면 된다.
3. 전체 코드
package 파리퇴치;
import java.util.*;
public class 파리퇴치 {
static int N;
static int M;
static int[][] map;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int test = sc.nextInt();
for(int T=1; T<=test; T++) {
N = sc.nextInt();
M = sc.nextInt();
map = new int[N][N];
for(int i=0;i<N;i++) {
for(int j=0;j<N;j++) {
map[i][j]=sc.nextInt();
}
}
//입력 끝
//시작과 끝을 정해준다.
int[][] end = new int[1][2];
end[0][0] = (N-1)-(M-1);//3
end[0][1] = (N-1)-(M-1);//3
int max=0;
for(int row=0;row<=end[0][0];row++) {
for(int col=0;col<=end[0][1];col++) {
//row col은 시작점을 나타낸다.
int cur_pari=0;
for(int hit_row=row;hit_row<row+M;hit_row++) {
for(int hit_col=col;hit_col<col+M;hit_col++) {
//파리채 범위만큼 때린다.
cur_pari+=map[hit_row][hit_col];
}
}
max=Math.max(max, cur_pari);
}
}
System.out.println("#"+T+" "+max);
}//test end
}
}
반응형
'알고리즘 > SWEA' 카테고리의 다른 글
1767. 프로세서 연결하기 [#Permutation] (0) | 2024.01.30 |
---|---|
16546. Baby-gin_실습 [#1차원 배열] (1) | 2023.10.10 |
1210. Ladder1 [#2차원 배열] (1) | 2023.10.09 |
1979. 어디에 단어가 들어갈 수 있을까 (0) | 2023.10.09 |
1208. Flatten [#1차원 배열] (0) | 2023.10.09 |