import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public static void main(String[] args) throws IOException {
// 입력
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int testcase = Integer.parseInt(bufferedReader.readLine());
for (int i = 1; i <= testcase; i++) {
// 입력
int N = Integer.parseInt(bufferedReader.readLine());
List<List<Integer>> map = new ArrayList<>();
for (int j = 0; j < N; j++) {
String input = bufferedReader.readLine();
List<Integer> mapLine = Arrays.stream(input.split(""))
.map(Integer::parseInt)
.collect(Collectors.toList());
map.add(mapLine);
}
// 합 누적
int sum = 0;
int mid = N / 2;
// 가운데 줄 기준, 위 아래 합산
for (int item : map.get(mid)) {
sum += item;
}
for (int k = 1; k <= mid; k++) {
int up = mid + k;
int down = mid - k;
for (int j = k; j < N-k; j++) {
sum += map.get(up).get(j);
sum += map.get(down).get(j);
}
}
System.out.println("#" + i + " " + sum);
}
}
}
역시 자바로 풀어봤다.
로직 자체는 매우 간단했고 반복문의 index 문제만
신경써주면 바로 풀리는 문제였다.
출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB