본문 바로가기

백준/브론즈 탈출하기

[Java] 백준 2562번 : 최댓값

문제

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

예를 들어, 서로 다른 9개의 자연수

3, 29, 38, 12, 57, 74, 40, 85, 61

이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.

예제 입력 1 복사

3
29
38
12
57
74
40
85
61

예제 출력 1 복사

85
8

 

정답 코드

import java.util.Scanner;
import java.util.Arrays;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int[] arr = new int[9];
    int max=arr[0];
    int count=0;
    
    // 입력 받은 숫자 만큼 배열에 저장 
    for(int i=0; i<arr.length; i++){
      arr[i] = sc.nextInt();
    }
    
    
    for(int i=0; i<arr.length; i++){
      if(max<arr[i]){ // 숫자를 저장
        max = arr[i];
        count = i+1;
      }
    }
    
    System.out.printf("%d\n%d", max, count);

  }
}

문자열 9개를 입력 받고 // 입력받는 숫자가 정해져있으니 배열 개수 9로 설정
최대값을 찾아서 출력  // 임의로 최대값을 arr[0]으로 설정하고 정수 크기 비교 시작 
이 최대값이 몇번째 인지 출력 // 배열은 0번째부터 시작이니, i+1

 

(오답) 출력 부분에서 처음에 이렇게 출력 했었는데, 

System.out.printf("%d", max);
System.out.printf("%d", count);

줄바꿈 x 

System.out.printf("%d\n", "%d", max, count);

연산자 일치x

 

- 오류 발생하는 이유

printf의 인자는 포맷 문자열(Format string)이고, 첫번째 포맷 문자열은 "%d\n"

"%d\n" : 한개의 정수 값을 줄바꿈하여 출력

"%d\n"이 요구하는 첫 번째 값으로 "%d" 문자열을 넣어졌기 때문에 오류가 발생 

 

 System.out.printf("%d\n%d", max, count);

그러니까 이렇게 넣어줘야 줄바꿈도 되고, max count 모두 받아 올 수 있다.