본문 바로가기

알고리즘 문제풀이/SWEA(SW Expert Academy)

[SWEA][JAVA]2805 - 농작물 수확하기

문제 출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB&categoryId=AV7GLXqKAWYDFAXB&categoryType=CODE&problemTitle=2805&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

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);
		}
	}
}