문제
설명
그렇게 난이도가 높지는 않은 문제로, 윗 부분, 가운데 부분, 아랫 부분 이렇게 총 세 개의 파트로 나누어서 각각을 구한 다음, sum에 누적시키며 답을 구해나갔습니다.
인덱스 조작 및 체크를 통한 반복문 종료 조건이 이 문제의 포인트입니다!
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class SWEA2805_Farm {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine()); //테스트 케이스 갯수
for (int tc = 1; tc <=num ; tc++) {
int size=Integer.parseInt(br.readLine()); //농장의 사이즈
int[][] farm = new int[size][size];
for(int i=0; i<size; i++) {
String[] nums=br.readLine().split("");
for(int j=0; j<size; j++) {
farm[i][j] = Integer.parseInt(nums[j]);
}
}
//입력 완료
int sum=0;
//인덱스들
int x_center = size/2;
for(int i=0; i<size; i++) //가운데 열의 값들은 다 더함
sum+=farm[x_center][i];
//center를 기준으로 위쪽
int start=0, end=size-1, x=x_center-1;
while(start!=end) {
start+=1; end-=1;
for(int i=start; i<=end; i++) {
sum+=farm[x][i];
}
x--;
}
//center를 기준으로 아래쪽
start=0; end=size-1; x=x_center+1;
while(start!=end) {
start+=1; end-=1;
for(int i=start; i<=end; i++) {
sum+=farm[x][i];
}
x++;
}
System.out.printf("#%d %d\n", tc, sum);
}
}
}
'알고리즘 문제풀이 > SWEA(SW Expert Academy)' 카테고리의 다른 글
[SWEA][JAVA] 1225 - 암호 생성기 (0) | 2021.08.22 |
---|---|
[SWEA][JAVA]1218 - 괄호 짝짓기 (0) | 2021.08.21 |
[SWEA][JAVA]2001 - 파리 퇴치 (0) | 2021.08.18 |
[SWEA][JAVA]1289 - 원재의 메모리 복구하기 (0) | 2021.08.17 |
[SWEA][JAVA]5215 - 햄버거 다이어트 (0) | 2021.08.13 |