알고리즘/문제

[백준] 2566번 문제 - JAVA

Retro Rat 2026. 3. 9. 21:16

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

[문제]


[해설]

1. 문제 이해

문제에서는 9×9 크기의 격자판이 주어지고, 총 81개의 숫자가 입력된다.
각 위치에는 0 또는 100보다 작은 자연수가 들어 있다.

이 중에서 해야 할 일은 다음 두 가지이다.

  1. 격자판 전체에서 가장 큰 값(최댓값)을 찾는다.
  2. 그 최댓값이 위치한 행과 열을 함께 출력한다.

행과 열의 번호는 문제에서 1부터 시작하는 좌표 체계를 사용한다.
또한 최댓값이 여러 개 존재할 수 있지만, 그 중 하나의 위치만 출력해도 된다.

2. 핵심 아이디어

이 문제의 핵심은 2차원 배열을 순회하면서 최댓값을 계속 갱신하는 것이다.

먼저 9×9 크기의 2차원 배열을 만들어 입력값을 저장한다.
이후 행과 열을 기준으로 이중 반복문을 사용하여 모든 칸을 탐색한다.

탐색하면서

  • 현재 위치의 값이 지금까지 저장된 최댓값보다 크거나 같다면
  • 최댓값을 갱신하고
  • 그 값의 행과 열 위치도 함께 저장한다.

이 과정을 모든 81개의 칸에 대해 반복하면
최종적으로 가장 큰 값과 그 위치를 알 수 있다.

마지막으로 최댓값과 저장해둔 행, 열 좌표를 출력하면 문제를 해결할 수 있다.


[코드]

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[][] arr = new int[9][9];
        int max = 0;
        int px = 0;
        int py = 0;

        for (int i=0; i<9; i++) {
            for (int j=0; j<9; j++) {
                arr[i][j] = sc.nextInt();
                if (arr[i][j] >= max) { 
                    max = arr[i][j];
                    px = i+1; py = j+1;
                }
            }
        }

        System.out.println(max);
        System.out.print(px + " ");
        System.out.print(py + " ");
        sc.close();
    }

'알고리즘 > 문제' 카테고리의 다른 글

[백준] 10872번 문제: 팩토리얼 - JAVA  (0) 2026.03.16
[백준] 15649번: N과 M (1) - JAVA  (0) 2026.03.16
[백준] 10810번 문제 - JAVA  (0) 2026.03.09
[백준] 25494번 문제 - JAVA  (0) 2026.03.08
[백준] 1037번 문제 - JAVA  (0) 2026.03.05