본문 바로가기
Java

[백준] 코딩테스트 문제 2566: 최댓값

by 리슈다 2026. 3. 4.

https://www.acmicpc.net/problem/2566

import java.util.*;
import java.io.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        int[][] ary = new int[9][9];
        int maxNum = -1;
        int n = 0;
        int m = 0;

        for(int i = 0; i < 9; i++) {
            st = new StringTokenizer(br.readLine());
            for(int j = 0; j < 9; j++) {
                ary[i][j] = Integer.parseInt(st.nextToken());
                if(ary[i][j] > maxNum) {
                    maxNum = ary[i][j];
                    n = i + 1;
                    m = j + 1;
                }
            }
        }

        System.out.println(maxNum);
        System.out.println(n + " " + m);
    }
}

9x9 배열 생성한 뒤에 입력되는 값을 할당함과 동시에 입력받는 수들 중 최댓값을 알기 위해 maxNum(초기값은 -1, 문제에서 0부터 100사이의 자연수만 입력한다고 했으므로)과 비교해서 가장 큰 값을 maxNum에 저장하고, 이때의 행과 열 값을 알기 위해 각각 i + 1, j + 1을 하여(배열 인덱스는 0부터 8까지인데 문제에서는 1~9행/열로 표시하기때문) n, m에 넣어줬다.

이후 최댓값과 n, m 출력

 

지교수님 버전

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int max = -1;
        int maxRow = 0;
        int maxCol = 0;

        for (int i = 1; i <= 9; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 1; j <= 9; j++) {
                int v = Integer.parseInt(st.nextToken());
                if (v > max) {
                    max = v;
                    maxRow = i;
                    maxCol = j;
                }
            }
        }

        StringBuilder sb = new StringBuilder();
        sb.append(max).append('\n');
        sb.append(maxRow).append(' ').append(maxCol);
        System.out.print(sb);
    }
}

배열을 생성할 필요는 없었음.

애초에 배열을 만드는 문제가 아니라 입력받은 수들 중에서 가장 큰 수만 출력하고 그때의 i, j값만 알면 되기 때문에..

또 for문 자체를 1부터 9까지 도는 것으로 설정해서 +1을 안 해도 된다.

StringBuilder 사용해서 출력문은 한 번만 사용함.