카테고리 없음
[Java] 2805. 농작물 수확하기
kyungsubbb
2021. 2. 5. 08:00
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
import java.util.Scanner;
public class SWEX_2805Farm {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for (int a = 1; a <= T; a++) {
int n = sc.nextInt();
int sum = 0;
for (int i = 0; i < n; i++) {
String val = sc.next();
for (int j = 0; j < n; j++) {
if (Math.abs(i - n / 2) + Math.abs(j - n / 2) <= n / 2) {
sum += val.charAt(j) - '0';
}
}
}
System.out.println("#" + a + " " + sum);
}
sc.close();
}
}
2차원 배열로 마름모 모양을 찍고, 값을 가져오는 방법으로 생각하고 문제를 풀었다.
우선 마름모 모양은 배열의 정 중앙으로부터 길이의 절반보다 적은 부분을 선택하면 된다.
코드를 작성하고 제출해보니까 더 짧은 방식으로 구현이 가능할 것 같아 위의 코드와 같이 최적화를 하였다.
이와 같이 작성하게 되면, 애초에 배열을 작성하지 않아도 값을 구할 수 있어 배열 한번 순회하는? 시간정도만으로 값을 도출할 수 있게 된다.