알고리즘 문제풀이/SWEA(SW Expert Academy)
[SWEA][JAVA]2805 - 농작물 수확하기
쑤테크
2021. 8. 19. 20:49
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
설명
그렇게 난이도가 높지는 않은 문제로, 윗 부분, 가운데 부분, 아랫 부분 이렇게 총 세 개의 파트로 나누어서 각각을 구한 다음, 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);
}
}
}