SWEA 2805 농작물 수확하기 (Java)

sua_ahn·2023년 1월 11일
0

알고리즘 문제풀이

목록 보기
1/14
post-thumbnail

농장을 위아래 절반으로 나누어 계산

import java.util.Scanner;

class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
        
		for(int test_case = 1; test_case <= T; test_case++) {
			int N = sc.nextInt();	// 농장 크기
            int mid = N / 2;
            int sum = 0;			// 총 수확한 농작물(수익)
            
            for(int i = 0; i < N; i++) {
                String crop = sc.next();	// 한 줄 입력받음

                if(i <= mid) {	// 농장 위쪽 절반의 경우
                    for(int j = mid - i; j < mid + i + 1; j++) {
                    	sum += crop.charAt(j) - '0';
                	}
                } else {		// 농장 아래쪽 절반의 경우
                    for(int j = i - mid; j < N + mid - i; j++) {
                    	sum += crop.charAt(j) - '0';
                	}
                } // end else
            } // end for i
            System.out.printf("#%s %s%n", test_case, sum);
		} // end for test_case
	}
}

농장 중앙으로부터의 거리로 계산 (가상의 2차원 배열)

import java.util.Scanner;

class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
        
		for(int test_case = 1; test_case <= T; test_case++) {
			int N = sc.nextInt();			// 농장 크기
            int sum = 0;					// 총 수확한 농작물(수익)
            
            for(int i = 0; i < N; i++) {
            	char[] arr = sc.next().toCharArray();	// 한 줄 입력받아 쪼개기
                // 중앙으로부터의 거리가 N/2 이하이면 수확
                for(int j = 0; j < N; j++) {
                    int distance = Math.abs(i - N/2) + Math.abs(j - N/2);
                    if(distance <= N / 2) {
                    	sum += arr[j] - '0';
                    }
                } // end for j
            } // end for i
            System.out.printf("#%s %s%n", test_case, sum);
        } // end for test_case
    }
}
                    
profile
해보자구

0개의 댓글