728x90

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB 

 

SW Expert Academy

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

swexpertacademy.com

 

 

문제)

 

 

 

 

풀이)

백준에 나와있는 별찍기 문제와 비슷하게 풀이한다고 생각하면 좋다.

 

1. 합계를 구해야 하기 때문에 string으로 받은 것을 숫자로 변환하는 방법을 알아야 한다.

 

str.charAt(index) - '0';

위 코드를 수행한다면 string으로 받은 숫자들 중 index에 해당하는 숫자에 -'0'을 해주게 되어 int type의 숫자가 나온다!

 

 

2. 합계를 구하는 방법으로, 

 

N의 절반을 구한 후, 행 기준 위와 아래쪽을 나눠서 구한다.

이때, 정 가운데부터 차례로 행의 index만큼 늘려서 받으면

문제와 같이 가운데부터 점점 늘어나는 모양으로 더할 수 있다.

 

import java.util.Scanner;

public class Solution_D3_2805_농작물수확하기 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();
		for(int test_case = 1; test_case <= T; test_case++)
		{
			int N = sc.nextInt();
			int[][] farm = new int[N][N];
			
			
			for(int i=0; i<N; i++) {
				String str = sc.next();
				for(int j=0; j<str.length(); j++) {
                	//숫자 변환
					farm[i][j] = str.charAt(j)-'0';
				}
			}
			
			
			int answer = 0;
            //중간 위쪽
			for(int i=0; i<N/2; i++) {
				for(int j=N/2-i; j<=(N/2+i); j++) {
					answer += farm[i][j];
				}
			}
			
			//중간부터 아래쪽
			for(int i=N/2; i>=0; i--) {
				for(int j=N/2-i; j<=N/2+i; j++) {
					answer += farm[N-i-1][j];
				}
			}
			
			System.out.println("#"+test_case + " " + answer);
		}//test_case
		sc.close();
	}//main
}

 

이 문제는 절반으로 나누는건 잘했는데 열을 기준으로 절반에서 어떻게 계속 더할지를 헤맸다.

간단하게 규칙을 찾을 수 있었는데ㅠ 연습해야지!

728x90

'코테 > SWEA' 카테고리의 다른 글

SWEA 2001. 파리퇴치(JAVA, Python)  (0) 2022.08.16
SWEA 1218. 괄호 짝짓기(JAVA)  (0) 2022.08.12
SWEA 1873. 상호의 배틀필드(JAVA)  (0) 2022.08.10
SWEA 1954. 달팽이 숫자(JAVA)  (0) 2022.08.08
SWEA 1210. Ladder1(JAVA)  (0) 2022.08.07

+ Recent posts