본문 바로가기

알고리즘 연습/2차원 배열

[백준 JAVA] 2566번- 최댓값

[문제]

아래 그림과 같이 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차원 배열' 카테고리의 다른 글