728x90
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com

import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int tc = 1; tc <= t; tc++) {
int n = sc.nextInt();
int arr[][] = new int[n][n];
int sum = 0;
for (int i = 0; i < n; i++) {
String str = sc.next();
for (int j = 0; j < n; j++) {
arr[i][j] = str.charAt(j) - '0';
}
}
// 중간 냠
for (int i = 0; i < n; i++) {
sum += arr[n / 2][i];
}
// 밑 삼각형
int idx = n / 2 + 1;
int count = 1;
for (int i = n / 2 - 1; i >= 0; i--) {
for (int j = count; j < n - count; j++) {
sum += arr[idx][j];
}
++idx;
++count;
}
// 위 삼각형
idx = n / 2 - 1;
count = 1;
for (int i = n / 2 - 1; i >= 0; i--) {
for (int j = count; j < n - count; j++) {
sum += arr[idx][j];
}
--idx;
++count;
}
System.out.println("#" + tc + " " + sum);
}
}
}
나눠서 정복하기 기법을 사용했는데 다시 풀어보면 더 좋은 방법이 떠오를 수도 있을 것 같다.
start end 값 바꿔주는 코드
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int tc = 1; tc <= t; tc++) {
int n = sc.nextInt();
int map[][] = new int[n][n];
for (int i = 0; i < n; i++) {
String str = sc.next();
for (int j = 0; j < str.length(); j++) {
map[i][j] = str.charAt(j) - '0';
}
}
int start = n / 2;
int end = n / 2;
int ans = 0;
for (int i = 0; i < n; i++) {
//System.out.println(start+" "+end);
for (int j = start; j <= end; j++) {
ans += map[i][j];
}
if (i < n / 2) {
start--;
end++;
} else {
start++;
end--;
}
}
System.out.println("#"+tc+" "+ans);
}
}
}728x90
'SW Expert Academy > SWEA D3' 카테고리의 다른 글
| [SW Expert Academy] 최대 성적표 만들기 (D3) (1) | 2024.09.03 |
|---|---|
| [SW Expert Academy] 통나무 자르기 (D3) (0) | 2024.09.03 |
| [SW Expert Academy] [S/W 문제해결 기본] 10일차 - 비밀번호 (D3) (0) | 2024.09.02 |
| [SW Expert Academy] 미니멀리즘 시계 (D3) (0) | 2024.09.02 |
| [SW Expert Academy] 두문자어 (D3) (0) | 2024.09.02 |