본문 바로가기
백준

[백준] 2566번 : 최댓값 – JAVA [자바]

by Hongwoo 2023. 8. 7.
반응형

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

 

2566번: 최댓값

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

 

백준 2566번 최댓값은 브론즈 3 난이도의 구현 문제이다. 

 

이 문제에서는 9 X 9 격자판에 81개의 자연수 또는 0이 주어진다. 이때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치해 있는지도 구하면 된다.

 

이 문제는 배열을 이용하지 않아도 충분히 풀 수 있다.

 

이 문제는 StringTokenizer만 이용해서도 충분히 풀 수 있다.

 

StringTokenizer는 문자열을 분리하는 클래스이다. 예를 들어보겠다. 만약에 문제 예시처럼 한 행에 다음과 같이 9개의 숫자가 있다고 해보겠다.

 

3 23 85 34 17 74 25 52 65

 

 

StringTokenizer st = new StringTokenizer(br.readLine());

 

이렇게 StringTokenizer 객체를 만들면 한 토켄에 3, 23, 85, ..., 65가 있고 이 StringTokenizer 객체에는 총 9개의 토켄이 있다. 따라서, 이 숫자들을 배열에 직접 저장하지 않아도 입력을 받을 때 이중 for-loop을 이용해서 현재 최댓값과 비교해서 풀 면 된다.

 

자세한 코드는 아래에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int max = 0;  //최댓값
        int row = 1;  //행
        int column = 1;  //열

        for (int i = 1; i <= 9; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int j = 1; j<= 9; j++) {
                int num = Integer.parseInt(st.nextToken());
                if (num > max) {
                    max = num;
                    row = i;
                    column = j;
                }
            }
        }
        System.out.println(max);
        System.out.println(row + " " + column);
    }

}

 

 

반응형

댓글