공부하기/백준

[Java] 백준 풀기 2566 - 최댓값

XEV 2023. 6. 29. 23:46

자바 백준 2566번

브론즈 3

https://www.acmicpc.net/problem/2566

 

2566번: 최댓값

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현

 

 

 

 

 

문제 풀기

2차원 행렬을 입력받고 2중 for loop 을 사용하여 최댓값을 탐색한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // 2차원 array 생성. 위치 행렬 번호는 index 동일 지정.
        int[][] grid = new int[1 + 9][1 + 9];
        
        // 주어진 9x9 격자 입력.
        getTheTwoDimensionalArray(grid);
        
        // 최댓값 찾기 및 결과 출력.
        findMaxValueAndPosition(grid);
    }
    
    private static void getTheTwoDimensionalArray(int[][] grid) {
        Scanner sc = new Scanner(System.in);
        
        // 9x9 격자 입력.
        for (int i = 1; i <= 9; i++) {
            // 한 줄의 입력에 대해 빈칸으로 나누어 배열에 저장.
            String[] row = sc.nextLine().split(" ");
            
            // String으로 저장된 숫자 배열을 Integer로 변경하여 준비된 2차원 배열에 저장.
            for (int j = 1; j <= 9; j++) {
                grid[i][j] = Integer.parseInt(row[j - 1]);  // String 배열은 index 0부터 저장되었기에 j - 1 기준.
            }
        }
        
        sc.close();
    }
    
    private static void findMaxValueAndPosition(int[][] grid) {
        // 최댓값, 행, 열 변수 선언 및 초기값 지정.
        int max = Integer.MIN_VALUE;
        int row = -1;
        int col = -1;
        
        // 2차원 배열을 모두 탐색하며 최댓값, 행, 열 저장.
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9; j++) {
                if (grid[i][j] > max) {  // 탐색된 값이 이전 max 값보다 작으면.
                    max = grid[i][j];
                    row = i;
                    col = j;
                }
            }
        }
        
        System.out.println(max);
        System.out.print(row + " " + col);
    }
    
}