격자판 최대합
내 코드 (정답) - 하
Time: 228ms Memory: 31MB
import java.util.*;
public class Main {
public Integer solution(int n, int[][] arr){
Integer answer = 0;
// 00 01 02 03 04
// 10 11 12 13 14
// 20 21 22 23 24
// 30 31 32 33 34
// 40 41 42 43 44
List<Integer> list1 = new ArrayList<>();
int total3 = 0; // 오른쪽 대각선
int total4 = 0; // 왼쪽 대각선
for(int i =0 ; i< n; i++){
int total1 = 0; // 가로 합
int total2 = 0; // 세로 합
total3 = total3 + arr[i][i];
for(int j = 0; j < n ; j++){
total1 = total1 + arr[i][j];
total2 = total2 + arr[j][i]; // 00 10 20 30 40 // 01 11 21 31 41
if(i + j == 4){
total4 = total4 + arr[i][j];
}
}
list1.add(total1);
list1.add(total2);
}
list1.add(total3);
list1.add(total4);
int Max = list1.get(0);
for(int i =0; i < list1.size(); i++){
if(list1.get(i) > Max){
Max = list1.get(i);
}
}
answer = Max;
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[][] arr = new int[n][n];
for(int i = 0 ; i < n ; i++){
for(int j = 0; j < n ; j++){
arr[i][j] = kb.nextInt();
}
}
System.out.print(T.solution(n, arr));
}
}
정답 코드
Math.max(int, int) 로 계속 비교를 하면서 정답을 찾아간 코드이다.
import java.util.*;
class Main {
public int solution(int n, int[][] arr){
int answer=-2147000000;
int sum1=0, sum2=0;
for(int i=0; i<n; i++){
sum1=sum2=0;
for(int j=0; j<n; j++){
sum1+=arr[i][j];
sum2+=arr[j][i];
}
answer=Math.max(answer, sum1);
answer=Math.max(answer, sum2);
}
sum1=sum2=0;
for(int i=0; i<n; i++){
sum1+=arr[i][i];
sum2+=arr[i][n-i-1];
}
answer=Math.max(answer, sum1);
answer=Math.max(answer, sum2);
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[][] arr=new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
arr[i][j]=kb.nextInt();
}
}
System.out.print(T.solution(n, arr));
}
}
봉우리
반응형
'CS 기초 > 알고리즘 · 문제풀이' 카테고리의 다른 글
HashMap, TreeSet (해쉬, 정렬지원 Set) - 학급 회장 (0) | 2022.03.13 |
---|---|
카카오 코딩 테스트 - 신규 아이디 추천 (0) | 2022.03.12 |
[JAVA] Array(1, 2차원 배열) - 점수계산 / 등수구하기 (0) | 2022.02.27 |
[JAVA] Array(1, 2차원 배열) - 피보나치 수열 / 소수(에라토스테네스 체) / 뒤집은 소수 (0) | 2022.02.27 |
[JAVA] Array(1, 2차원 배열) - 큰 수 출력하기 / 보이는 학생 / 가위 바위 보 (0) | 2022.02.26 |