[JAVA] 최댓값

NoHae·2025년 8월 22일

백준

목록 보기
69/106

문제 출처

단계별로 풀어보기 > 2차원 배열 > 최댓값

문제 설명

9x9 격자판에 81개의 0~자연수가 주어질 때, 최댓값을 찾고, 최댓값의 행과 열을 출력하라.

접근 방법

2중 for문을 이용하여 주어지는 수를 비교한다.
readLine() 메서드를 이용하여 한 줄씩 받아서 Token 별로 비교한다.

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

public class 최댓값 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int[][] arr = new int[9][9];

        int max = Integer.MIN_VALUE;
        int row = 0;
        int col = 0;

        for(int i = 0; i < 9; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            for(int j = 0; j < 9; j++){
                arr[i][j] = Integer.parseInt(st.nextToken());
                if(arr[i][j] > max){
                    max = arr[i][j];
                    row = i;
                    col = j;
                }
            }
        }

        StringBuilder sb = new StringBuilder();

        sb.append(String.valueOf(max)).append("\n").append(String.valueOf(row+1)).append(" ").append(String.valueOf(col+1));

        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();


    }
}

알게된 점

문제는 2차원 배열에서 최댓값을 찾는 문제이지만, 사실상 2차원 배열을 사용할 필요가 없는 문제 인 것같다. 문제 풀 때는, 단순히 2차원 배열 문제 + 해당 위치를 표시하기 위해서 일단 썼는데 사실상 필요 없이 단순히 i,j만 사용해도 된다.

시간 복잡도는 O(81)이다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글