알고리즘/SWEA
[SWEA / 농작물 수확하기 / JAVA]
KDW999
2023. 5. 17. 11:30
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 접근
파란 부분을 상단, 중간, 아래로 나누어서 계산
배열의 인덱스는 0부터 시작이라 N/2를 사용하면 인덱스의 중간 사용 가능
하단 부분 범위 정하는 게 헷갈렸는데 상단과는 반대로 i는 작아져야하고, 작아지는 i를 토대로 N-i-1로 하단의 인덱스를 지정
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++) {
int N = Integer.parseInt(br.readLine());
int[][] map = new int[N][N];
for(int i=0; i<N; i++) {
String str = br.readLine();
for(int j=0; j<N; j++) {
map[i][j] = str.charAt(j)-48;
}
}
int sum=0;
// 상단
for(int i=0; i<N/2; i++) {
for(int j=N/2-i; j<=N/2+i; j++) {
sum += map[i][j];
}
}
// 중간
for(int i=N/2; i == N/2; i++) {
for(int j=0; j<N; j++) {
sum += map[i][j];
}
}
// 하단
for(int i= (N/2)-1; i>=0; i--) {
for(int j= N/2-i; j<= N/2+i; j++) {
sum += map[N-i-1][j];
}
}
System.out.println("#"+t+" " + sum);
}
}
}