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를 추가하고 단순 비교갱신 해줬다.