loading
본문 바로가기
Coding/Backjoon

[BOJ / java] 2566번 최댓값

by NeuLyeo 2024. 3. 5.

[BOJ / java] 2566번 최댓값

 

2566번: 최댓값

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

www.acmicpc.net

 

 

 

 

📚 Table of Contents

     

     

     

     

    문제N

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

     

    예를 들어, 다음과 같이 81개의 수가 주어지면

      1열 2열 3열 4열 5열 6열 7열 8열 9열
    1행 3 23 85 34 17 74 25 52 65
    2행 10 7 39 42 88 52 14 72 63
    3행 87 42 18 78 53 45 18 84 53
    4행 34 28 64 85 12 16 75 36 55
    5행 21 77 45 35 28 75 90 76 1
    6행 25 87 65 15 28 11 37 28 74
    7행 65 27 75 41 7 89 78 64 39
    8행 47 47 70 45 23 65 3 41 44
    9행 87 13 82 38 31 12 29 29 80

     

    이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다.

     

     

    입력

    첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 주어지는 수는 100보다 작은 자연수 또는 0이다.

     

     

    출력

    첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다.

     

    최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다.

     

     

    예제

    예제 입력 1

    3 23 85 34 17 74 25 52 65
    10 7 39 42 88 52 14 72 63
    87 42 18 78 53 45 18 84 53
    34 28 64 85 12 16 75 36 55
    21 77 45 35 28 75 90 76 1
    25 87 65 15 28 11 37 28 74
    65 27 75 41 7 89 78 64 39
    47 47 70 45 23 65 3 41 44
    87 13 82 38 31 12 29 29 80

    예제 출력 1

    90
    5 7

     

     

     

     

    문제 풀이

    코드설명

    • 코드의 목적:
      • 이 코드는 9x9 크기의 2차원 배열에서 가장 큰 값을 찾고, 그 값이 위치한 행과 열을 출력합니다.
    • 코드의 동작 방식:
      • 사용자로부터 9x9 크기의 2차원 배열을 입력받습니다.
      • 입력받은 배열을 순회하며, 가장 큰 값을 찾아냅니다.
      • 가장 큰 값이 위치한 행과 열을 기록합니다.
      • 가장 큰 값과 그 위치를 출력합니다.
    • 코드 구성:
      • BufferedReader를 사용하여 사용자로부터 입력을 받습니다.
      • StringTokenizer를 사용하여 각 줄의 숫자를 분리하고 파싱합니다.
      • 2중 for문을 사용하여 9x9 크기의 배열을 순회하며, 각 순회에서 가장 큰 값을 찾습니다.
      • 가장 큰 값과 그 위치를 출력합니다.
    • 코드의 핵심 부분:
      • 가장 큰 값을 찾는 부분: if (max <= n)
      • 가장 큰 값이 위치한 행과 열을 기록하는 부분: a = i + 1; b = j + 1;
    • 코드 흐름:
      • 9x9 크기의 2차원 배열 입력 받기 → 2차원 배열 순회하며 가장 큰 값 찾기 → 가장 큰 값의 위치 기록 → 가장 큰 값과 그 위치 출력

     

     

    풀이

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    public class _02_최댓값 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringTokenizer st;
            int a = 0, b = 0, max = 0;
    
            // 사용자로부터 9x9 크기의 2차원 배열을 입력 받습니다.
            for (int i = 0; i < 9; i++) {
                st = new StringTokenizer(br.readLine());
                for (int j = 0; j < 9; j++) {
                    int n = Integer.parseInt(st.nextToken());
                    // 가장 큰 값을 찾습니다.
                    if (max <= n) {
                        max = n;
                        // 가장 큰 값이 위치한 행과 열을 기록합니다.
                        a = i + 1;
                        b = j + 1;
                    }
                }
            }
            // 가장 큰 값과 그 위치를 출력합니다.
            System.out.println(max);
            System.out.println(a + " " + b);
        }
    }