-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
2-9. 격자판 최대합
22.12.25 21:34 작성 조회수 147
0
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main{
public int solution(int n, int[][] arr) {
int answer = Integer.MIN_VALUE; // 최대값을 찾아야 하므로 MIN_VALUE; 사용
int sum1; // 행의 합
int sum2; // 열의 합
for (int i = 0; i < n; i++) {
sum1 = sum2 = 0; // 0행 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); // 더 큰 값이 answer로 들어감
}
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) throws NumberFormatException, IOException {
MainT = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st;
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < n; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
System.out.println(T.solution(n, arr));
}
}
안녕하세요 선생님 2.9에서 Main 메소드 부분에서 저는 BufferedReader를 사용했는데요
선생님께선 이중 for문을 사용하여 그 안에 scanner Int 를 사용하셨는데
for(int i = 0; i < n; i++) {
for(int j = 0; j <n; j++){
arr[i][j] = kb.nextInt();
}
}
이 것과 bufferedReader의 차이점은 nextInt()는 입력 즉시 배열의 인덱스에 넣어주는 것이고
BufferedReader는 StringTokenizer를 사용했기 때문에 한 번에 입력 받고 한 번에 넣어주기 때문에 서로의 반복문 사용법이 다르다고 이해했는데 제가 이해한게 맞을까요? 이상한 질문드려 죄송해요 ㅠㅠ
답변을 작성해보세요.
0
김태원
지식공유자2022.12.28
안녕하세요^^
네. 맞습니다.
님의 코드는 BufferedReader를 통해 readLine()으로 한 줄씩 읽고 그걸 공백을 기준으로 분리하는 작업입니다.
답변 1