(Java) 백준 2562번 - 최대

코딩너구리·2026년 1월 13일

코딩 문제 풀이

목록 보기
155/266

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

문제

> 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
> 예를 들어, 서로 다른 9개의 자연수 
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

접근

최대값을 저장할 변수 Max를 선언하고 9개의 숫자가 자연수이므로 초기값으로 0을 준다.
반복문을 통해 수를 9개 입력받는다. 받으면서 그 숫자와 Max의 숫자를 비교해 입력된 숫자가 더 크면 Max의 값을 갱신하고 몇번째 수인지 인덱스를 저장한다.

문제해결

> 최대값을 저장할 Max변수와 몇번쨰 수 인지 인덱스를 저장할 idx변수를 초기값 0으로 선언한다.
> 9번의 반복을 돌며 수를 tmp 변수에 입력받고 이를 Max와 비교해 더 큰 수를 Max에 갱신한다. 
> 만약 Max가 갱신이 일어난다면 idx에 현재 반복문의 i를 저장해 몇 번째인지를 나타낸다.
> 두 수를 출력한다.

코드

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

public class Main
{
    //2562번 최대값
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int Max = 0;
        int idx = 0;
        for(int i = 1; i <= 9; i++)
        {
            int tmp = Integer.parseInt(br.readLine());
            if(tmp > Max)
            {
                Max = tmp;
                idx = i;
            }
        }
        bw.write(Max + "\n");
        bw.write(idx + "\n");
        bw.flush();
        bw.close();
    }
}

후기

배열을 써서 처음에 했는데 반복문으로 입력받고 또 반복문으로 배열에 있는 애들을 꺼내서 비교하는게 비효율적인거 같아서 그냥 압력받으면서 Math.max로 두 수를 비교했다.
근데 문제에서 몇 번째 수 인지도 출력하라고 해서 idx를 추가하고 단순 비교갱신 해줬다.

0개의 댓글