[문제]
아래 그림과 같이 9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오.

* 입력 : 첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 주어지는 수는 100보다 작은 자연수 또는 0이다.
* 출력 : 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.
[풀이]
1. 9×9 격자판 안에 숫자를 넣기 위해 9행 9열을 저장할 배열을 선언
int[][] arr = new int[9][9];
2. 최댓값과 그 행/열의 값을 저장할 배열 혹은 변수 선언
//변수로 선언할 경우
int max = 0; //최댓값
int x = 0; //행
int y = 0; //열
//배열로 선언할 경우
int[] a = new int[3] //0은 최댓값, 1은 행, 2은 열
3. 격자판 배열인 arr에 값을 입력
for(int i = 0; i<9; i++){
for(int j = 0; j<9; j++){
arr[i][j] = sc.nextInt();
//조건문을 추가하여 최대값 저장 코드 구현 필요
}
}
4. 입력을 받음과 동시에 최댓값을 판별하여 최댓값/행/열의 변수 값을 변동시켜줌
//최댓값 판별 구현 코드
if(arr[i][j] >= max) {
max = arr[i][j];
x = i+1;
y = j+1;
}
5. 최종적으로 값 출력
[최종 코드]
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int[][] arr = new int[9][9];
int max = 0;
int x = 0;
int y = 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];
x = i+1;
y = j+1;
}
}
}
System.out.println(max);
System.out.println(x + " " + y);
}
}
'알고리즘 연습 > 2차원 배열' 카테고리의 다른 글
[백준 JAVA] 2563번 - 색종이 (0) | 2022.11.27 |
---|---|
[백준 JAVA] 2738번 - 행렬 덧셈 (0) | 2022.10.27 |