으하하 공부일기
[SWEA] - 2805. 농작물 수확하기 (D3) 본문
[문제]
N X N크기의 농장이 있다.
이 농장에는 이상한 규칙이 있다.
규칙은 다음과 같다.
① 농장은 크기는 항상 홀수이다. (1 X 1, 3 X 3 … 49 X 49)
② 수확은 항상 농장의 크기에 딱 맞는 정사각형 마름모 형태로만 가능하다.

1 X 1크기의 농장에서 자라는 농작물을 수확하여 얻을 수 있는 수익은 3이다.
3 X 3크기의 농장에서 자라는 농작물을 수확하여 얻을 수 있는 수익은 16 (3 + 2 + 5 + 4 + 2)이다.
5 X 5크기의 농장에서 자라는 농작물의 수확하여 얻을 수 있는 수익은 25 (3 + 2 + 1 + 1 + 2 + 5 + 1 + 1 + 3 + 3 + 2 + 1)이다.
농장의 크기 N와 농작물의 가치가 주어질 때, 규칙에 따라 얻을 수 있는 수익은 얼마인지 구하여라.
[제약 사항]
농장의 크기 N은 1 이상 49 이하의 홀수이다. (1 ≤ N ≤ 49)
농작물의 가치는 0~5이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 농장의 크기 N과 농장 내 농작물의 가치가 주어진다.
[출력]
각 줄은 '#t'로 시작하고, 공백으로 농장의 규칙에 따라 얻을 수 있는 수익을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

문제 풀기
2805. 농작물 수확하기
[풀이]
- 2차원 배열에 작물의 가치를 저장한다.
- 1행의 (n/2)번째 인덱스 부터 시작하여 2칸씩 넓혀가면서 가치를 더하면서 내려간다.
- 행이 (n/2)번째 인덱스가 되면 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 tc=1; tc<=t; tc++) {
int n = sc.nextInt();
int arr[][] = new int[n][n];
int result = 0;
for(int i=0; i<n; i++) {
String str = sc.next();
for(int j=0; j<n; j++) {
arr[i][j] = str.charAt(j) - '0';
}
}
int idx = 0;
for(int i=0; i<n; i++) {
for(int j=(n/2)-idx; j<=(n/2)+idx; j++) {
result += arr[i][j];
}
if(i>=n/2) idx--;
else idx++;
}
System.out.format("#%d %d\n", tc, result);
}
}
}
'SWEA > D3' 카테고리의 다른 글
[SWEA] - 2817. 부분 수열의 합 (D3) (0) | 2022.05.07 |
---|---|
[SWEA] - 2814. 최장 경로 (D3) (0) | 2022.05.07 |
[SWEA] - 2806. N-Queen (D3) (0) | 2022.05.06 |
[SWEA] - 1873. 상호의 배틀필드 (D3) (0) | 2022.05.06 |
[SWEA] - 1860. 진기의 최고급 붕어빵 (D3) (0) | 2022.05.06 |