Notice
Recent Posts
Link
- Today
- Total
hye-log
[SWEA]2805번 농작물 수확하기(JAVA) 본문
0. 문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB
1. 문제 설명
1) N이 홀수인 N*N 농장이 있음
2) 마름모 형태로 수익을 얻을 때 얻을 수 있는 수익 출력
2. 입출력
// input
1
5
14054
44250
02032
51204
52212
// output
#1 23
3. 코드
import java.util.*;
public class swea2805 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 테스트케이스 받기
int T = sc.nextInt();
// 테스트케이스 반복
for(int t = 1; t <= T; t++){
int N = sc.nextInt();
int[][] map = new int[N][N];
int ans = 0;
// 공백 없는 숫자 입력 받기
for(int i = 0; i < N; i++) {
String str = sc.next();
for(int j = 0; j < N; j++) {
map[i][j] = str.charAt(j) - '0';
}
}
// 왼쪽, 오른쪽 기준
int left = N / 2;
int right = N / 2;
for(int i = 0; i < N; i++) {
if (i < N / 2) { // 내려가면서 증가
for(int j = left; j <= right; j++) {
ans += map[i][j];
}
left--;
right++;
} else { // 내려가면서 감소
for(int j = left; j <= right; j++) {
ans += map[i][j];
}
left++;
right--;
}
}
// 출력
System.out.printf("#%d %d\n", t, ans);
}
}
}
실행 결과
4. 회고
1) 공백 없는 숫자 입력 받기
String 형태로 입력 받은 후에 charAt으로 한 글자씩 리턴하여 '0' 을 뺌
// 공백 없는 숫자 입력 받기
for(int i = 0; i < N; i++) {
String str = sc.next();
for(int j = 0; j < N; j++) {
map[i][j] = str.charAt(j) - '0';
}
}
2) 윗줄과 아랫줄로 나누어서 경우를 생각
if (i < N / 2) { // 내려가면서 증가
for(int j = left; j <= right; j++) {
ans += map[i][j];
}
left--;
right++;
} else { // 내려가면서 감소
for(int j = left; j <= right; j++) {
ans += map[i][j];
}
left++;
right--;
}
5. Github
https://github.com/iihye/Algorithm/blob/main/SWEA/swea2805.java
728x90
'CodingTest > SWEA' 카테고리의 다른 글
[SWEA]1940번 가랏! RC카!(JAVA) (0) | 2023.07.30 |
---|---|
[SWEA]1974번 스도쿠 검증(JAVA) (0) | 2023.07.30 |
[SWEA]1208번 Flatten(JAVA) (0) | 2023.07.30 |
[SWEA]1234번 비밀번호(JAVA) (0) | 2023.07.29 |
[SWEA]7272번 안경이 없어!(JAVA) (0) | 2023.07.29 |
Comments