문제
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 모두 받아 올 수 있다.
'백준 > 브론즈 탈출하기' 카테고리의 다른 글
[Java] 백준 2475번 : 검증수 (0) | 2023.11.10 |
---|---|
[Java] 백준 25083번 : 새싹 (0) | 2023.11.02 |
[Java] 백준 11720번 : 숫자의 합 (0) | 2023.10.30 |
[Java] 백준 10818번 : 최소, 최대 (0) | 2023.10.29 |
[Java] 백준 5597번 : 과제 안내신 분..? (0) | 2023.10.22 |