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

hyng·2022년 1월 10일
0

SWEA

목록 보기
5/78

마름모 모양의 각 행의 시작 위치, 끝나는 위치를 변수에 기록해두면 쉽게 풀리는 문제

import java.util.*;
class Solution
{
	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);

        StringBuffer sb = new StringBuffer();

        int T = Integer.parseInt(sc.nextLine());

        for(int tc=1; tc<=T; tc++){
            sb.append("#").append(tc).append(" ");
            
            int N = Integer.parseInt(sc.nextLine());
            
            int map[][] = new int[N][N];
            for(int i=0; i<N; i++){
                String input[] = sc.nextLine().split("");
                for(int j=0; j<N; j++){
                    map[i][j] = Integer.parseInt(input[j]);
                }
            }

            sb.append(solve(N, map)).append("\n");
            
        }
        System.out.println(sb);
	}
    static int solve(int N, int map[][]){
        int i = N / 2; //각 행의 시작 위치
        int c = 1; //각 행의 열의 갯수
        int sum = 0;
        for(int r=0; r<N; r++){
            int ii = i;
            //각 행의 시작 위치에서 정해진 갯수만큼 더한다.
            for(int j=0; j<c; j++){
                sum += map[r][ii++];
            }
            //행이 N/2보다 크거나 같다면 열의 갯수를 2씩 줄이고, 시작 위치는 1증가한다.
            if(r >= N/2){
                c-=2;
                i++;
            }else{
                c+=2;
                i--;
            }

        }
        return sum;
    }
    
}
profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글