영원히 남는 기록, 재밌게 쓰자

SWEA [2805] 농작물 수확하기 D3 본문

Algorithm/SWEA

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

youngjae-kim 2024. 2. 14. 22:00
728x90
반응형
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

풀이

행마다 마름모 꼴로 값을 더해주는 로직을 생각해 내는 것이 문제의 핵심이었다.

가운데 인덱스를 기준으로 양옆으로 더해나가는 방식으로 해결하려고 했지만 복잡하여서 다른 방식으로 접근 하였다.

가운데를 기준으로 시작 인덱스와 끝 인덱스를 늘리고 가운데 행을 넘어서면 다시 줄여나가면서 값을 더해주는 방식으로 접근했음.

너무 어렵게 생각한 문제였다.

 

정답 코드

package com.swea.D3.p2805;

import java.io.*;

public class Solution {
    static int n, mid;
    static int[][] map;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine());

        for (int t = 1; t <= T; t++) {
            sb.append("#" + t + " ");

            n = Integer.parseInt(br.readLine());

            map = new int[n][n];

            for (int i = 0; i < n; i++) {
                String str = br.readLine();

                for (int j = 0; j < n; j++) {
                    map[i][j] = str.charAt(j) - '0';
                }
            }

            int start = n / 2;
            int end = n / 2;
            mid = n / 2;
            int sum = 0;

            for (int i = 0; i < n; i++) {
                for (int j = start; j <= end; j++) {
                    sum += map[i][j];
                }

                if (i < mid) {
                    start--;
                    end++;
                } else {
                    start++;
                    end--;
                }
            }

            sb.append(sum + "\n");
        }

        System.out.println(sb);
    }
}
728x90
반응형