https://www.acmicpc.net/problem/2566
[문제]


[해설]
1. 문제 이해
문제에서는 9×9 크기의 격자판이 주어지고, 총 81개의 숫자가 입력된다.
각 위치에는 0 또는 100보다 작은 자연수가 들어 있다.
이 중에서 해야 할 일은 다음 두 가지이다.
- 격자판 전체에서 가장 큰 값(최댓값)을 찾는다.
- 그 최댓값이 위치한 행과 열을 함께 출력한다.
행과 열의 번호는 문제에서 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 |