Jun's Development Journey
[SWEA] 1209. [S/W 문제해결 기본] Array2 - Sum 본문
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
www.swexpertacademy.com
풀이
이 문제는 입력 데이터의 형태를 제대로 파악하지 않고 입력을 받아 계속된 오류 때문에 고생했던 문제이다. 입력 값 맨 앞에는 문제 번호를 받는 데이터가 하나 더 있었다. 다음 문제부턴 이 부분도 신경쓰면서 구현해야겠다.
우선 각 행과 열과 합의 최대를 구하기 위해서 첨자를 이용해서 행과 열의 합을 한번에 구할 수 있도록 함수를 구현했다.
두 대각합의 경우는 대각의 첨자와 배열의 크기를 이용해서 정방향의 대각합과 역방향의 대각합을 한번에 구할 수 있도록 함수를 구현했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
public class Solution {
static Scanner scan = new Scanner(System.in);
static int[][] array = new int[100][100];
static int rc_sum_max() {//행과 열의 합 중 가장 큰 값 리턴하는 함수
int t_max = -1;
for(int i=0;i<100;i++) {
int r_sum=0, c_sum=0;
for(int j=0;j<100;j++)
r_sum+=array[i][j];
for(int k=0;k<100;k++)
c_sum+=array[k][i];
}
return t_max;
}
static int d_sum_max() {//두 대각선의 합 중 큰 값을 리턴하는 함수
int d_sum1=0, d_sum2=0;
for(int i=0;i<100;i++) {
d_sum1+=array[i][i];
d_sum2+=array[i][100-i-1];//첨자와 배열 크기를 이용하여 반대 대각 값 구하기
}
return Math.max(d_sum1, d_sum2);
}
static void read() {
scan.nextInt();//골 때리는 문제 번호 입력 부분
for(int i=0;i<100;i++) {
for(int j=0;j<100;j++) {
array[i][j] = scan.nextInt();
}
}
}
static void solution() {
int answer = 0;
for(int i=1;i<=10;i++) {
read();
answer = Math.max(rc_sum_max(), d_sum_max());
System.out.println("#"+i+" "+answer);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
solution();
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'SWEA > Intermediate' 카테고리의 다른 글
[SWEA] 1211. [S/W 문제해결 기본] Array2 - Ladder2 (0) | 2019.08.02 |
---|---|
[SWEA] 1210. [S/W 문제해결 기본] Array2 - Ladder1 (0) | 2019.08.01 |
[SWEA] 1208. [S/W 문제해결 기본] Array1 - Flatten (0) | 2019.08.01 |
[SWEA] 1206. [S/W 문제해결 기본] Array1 - View (0) | 2019.07.31 |
[SWEA] 1204. [S/W 문제해결 기본] Array1 - 최빈수 구하기 (0) | 2019.07.31 |