<문제 제시>
<문제설명>
9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때,
이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.
<예시 입출력>
<문제 해결 과정>
모든 인덱스를 돌며 max값을 찾아내야한다. 1열부터 찾아야하므로 x와 y 변수에 i + 1, j + 1을 각각 해준다.
Answer 1)
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[0].length; j++) {
if(arr[i][j] >= max) {
max = arr[i][j];
// 1열부터 시작된다고 고지되어있으므로 +1을 해줌
x = i + 1;
y = j + 1;
}
}
}
if(arr[i][j] >= max) 조건문으로 max값을 쉽게 찾아낼 수 있었다.
<전체코드>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int[][] arr = new int[9][9];
// INPUT : 9 x 9
for(int i = 0; i < 9; i++) {
st = new StringTokenizer(br.readLine());
for(int j = 0; j < 9; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
// 1차 테스트 : 2차원 배열 데이터출력
System.out.println(Arrays.deepToString(arr));
// 2. 최대값 찾기
int max = 0;
int x = 0;
int y = 0;
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[0].length; j++) {
if(arr[i][j] >= max) {
max = arr[i][j];
// 1열부터 시작된다고 고지되어있으므로 +1을 해줌
x = i + 1;
y = j + 1;
}
}
}
System.out.println(max + "\n" + x + " " + y);
}
}
StringTokenizer를 통해 2차원 배열의 값을 입력받고,
arr[i][j] >= max 를 통해 max값을 쉽게 찾아낼 수 있었다.
문제링크)
https://www.acmicpc.net/problem/2566
'Algorithms > 백준' 카테고리의 다른 글
[백준] '수 정렬하기3' - Java (0) | 2023.07.17 |
---|---|
[백준] '색종이' - Java (0) | 2023.07.17 |
[백준] '행렬 덧셈' - Java (0) | 2023.07.16 |
[백준] '나이순 정렬' - Java (0) | 2023.07.15 |
[백준] '단어 정렬' - Java (0) | 2023.07.15 |