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 사용해서 출력문은 한 번만 사용함.
'Java' 카테고리의 다른 글
| [백준] 코딩테스트 문제 2745: 진법 변환 (0) | 2026.03.16 |
|---|---|
| [프로그래머스][Lv.2] 최댓값과 최솟값 (0) | 2026.03.05 |
| [백준] 코딩테스트 문제 2738: 행렬 덧셈 (0) | 2026.03.04 |
| [백준] 코딩테스트 문제 25206: 너의 평점은 (0) | 2026.03.03 |
| [백준] 코딩테스트 문제 1316: 그룹 단어 체커 (0) | 2026.03.02 |