BOJ

[백준 2562번/JAVA] 배열 최댓값, 최댓값의 인덱스 구하기

syj0522 2024. 3. 4. 18:35

문제

풀이

  1. 길이가 9인 정수형 배열을 선언한다.
  2. BufferedReader로 자연수 9개를 입력받아 배열에 저장한다. >> 개행문자 기준이므로 StringTokenizer 쓰지 않음
  3. 최댓값을 저장할 변수 max를 선언하고 0으로 초기화한다. >> 문제에서 입력값이 100보다 작은 자연수로 주어졌으므로, max값을 가장 작은 자연수인 1보다 더 작은 0으로 설정했다. 초기값 0을 입력값(1~100)과 비교하여 더 큰 값으로 update한다.
  4. 배열의 모든 요소를 비교해야 하므로 for문을 배열의 길이(9)만큼 회전한다.
  5. max가 update될 때마다 index값을 update한다.
  6. BufferedWriter로 max, index를 출력한다.

코드

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

public class Main {
    public static void main(String[] args) throws IOException{
        //BufferedReader로 자연수 9개 받고 배열에 저장
        //max 찾기 >> 배열 원소와 임의의 값 바로 비교
        //max의 위치 찾기
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int[] arr = new int[9];
        int max = 0;
        int index = 0;

        for(int i=0; i<9; i++) {
            arr[i] = Integer.parseInt(br.readLine());
            if(max<arr[i]) {
                max = arr[i];
                index = i+1;
            }                
        }
        bw.write(max + "\n" + index + "\n");
        bw.close();
    }
}

Note

배열에서 min, max를 찾을 때 배열의 요소를 특정 값과 비교하여 구할 수 있다.
비교 대상은
min = 주어진 입력값 범위 이상의 수
max = 주어진 입력값 범위 이하의 수
로 설정하고 min보다 작으면 min을 그 수로 update, max보다 크면 max를 그 수로 update한다.