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

안수진·2024년 8월 20일

SWEA

목록 보기
3/17
post-thumbnail

[SWEA] 2805. 농작물 수확하기

📝 풀이 과정

너무 어렵게 생각했다..
start, end 투 포인터를 사용해서 농작물의 가치를 더하는 것은 파악했지만, 각 열 별로 height를 두고 x좌표를 이동시키고 뭐시기 저시기.. 했다..

  1. start, end 위치를 N/2로 둔다.

  2. 각 행마다 start ~ end 위치에 해당하는 값을 sum에 더한다.

  3. 행을 기준으로 절반은 start--, end++
    절반 아래로는 start++, end-- 하면서 열의 범위를 조정한다.


👩🏻‍💻 제출 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {
	
	static int N;
	static int[][] farm;

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int T = Integer.parseInt(br.readLine());
		
		for(int t = 1; t <= T; t++) {
			N = Integer.parseInt(br.readLine());
			farm = new int[N][N];
			
			for(int i = 0; i < N; i++) {
				String input = br.readLine();
				for(int j = 0; j < N; j++) {
					farm[i][j] = input.charAt(j) - '0';
				}
			}
			
			System.out.println("#" + t + " " + solve());
			
		}
		
		
		
	}
	
	private static int solve() {
		
		int start = N/2;
		int end = N/2;
		int sum = 0;
		
		for(int x = 0; x < N; x++) {
			for(int i = start; i <= end; i++) {
				sum += farm[x][i];
			}
			
			if(x < N/2) {
				start--;
				end++;
			}
			else {
				start++;
				end--;
			}
		}
		
		return sum;
	}

}
profile
항상 궁금해하기

0개의 댓글