• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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를 사용했기 때문에 한 번에 입력 받고 한 번에 넣어주기 때문에 서로의 반복문 사용법이 다르다고 이해했는데 제가 이해한게 맞을까요? 이상한 질문드려 죄송해요 ㅠㅠ

답변 1

답변을 작성해보세요.

0

안녕하세요^^

네. 맞습니다.

님의 코드는 BufferedReader를 통해 readLine()으로 한 줄씩 읽고 그걸 공백을 기준으로 분리하는 작업입니다.