문제
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
입력
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
입력 | 출력 |
3
29
38
12
57
74
40
85
61 | 85
8 |
답
◽Scanner
import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.Collectors;
public class ScannerJava {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] a = new int[9];
for (int c = 0; c < 9; c++) {
int number = sc.nextInt();
a[c] = number;
}
int max = Arrays.stream(a).max().getAsInt();
int idx = Arrays.stream(a).boxed().collect(Collectors.toList()).indexOf(max) + 1;
// Arrays.stream : IntStream 생성(기본형 스트림)
// boxed : Stream<Integer>로 변환 (기본형 스트림 -> 참조형 스트림)
// collectors.toList() : List<Integer>로 변환
// indexOf(max) + 1; // max의 인덱스 + 1을 하여 자릿수 위치 찾
System.out.println(max);
System.out.println(idx);
sc.close();
}
}
◽ BufferedReader / BufferedWriter
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
import java.util.stream.Collectors;
public class Main {
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[] a = new int[9];
for (int i = 0; i < 9; i++) {
a[i] = Integer.parseInt(br.readLine());
}
int max = Arrays.stream(a).max().getAsInt();
int idx = Arrays.stream(a).boxed().collect(Collectors.toList()).indexOf(max) + 1;
bw.write(max + "\n");
bw.write(idx + "\n");
br.close();
bw.flush();
bw.close();
}
}
Share article