티스토리 뷰

 문제 

 

2562번: 최댓값

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

www.acmicpc.net


 풀이 - Java 11 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class J_2562 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] arr = new int[9]; // 정수 9개를 담을 배열 선언

        for (int i = 0; i < 9; i++) {
            arr[i] = Integer.parseInt(br.readLine());   // 배열에 9개의 수를 넣음
        }
        //Arrays.stream(배열명) 배열 생성
        System.out.println(Arrays.stream(arr).max().getAsInt()); //최댓값 출력

        int count = 0; //배열의 몇번째 위치인지 나타낼 변수
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == (Arrays.stream(arr).max().getAsInt())) {
                count=i;
                break;
            }
        }
        System.out.println(count+1); // 최댓값 위치 출력 - 0번째가 아닌 1번째로 나타내기에 +1을 해준다.
    }
}

 

 


 알아야하는 개념 

▪ Stream 왜 쓰는가?

스트림은 배열이나 컬렉션(List, Set, Map)으로 원하는 값을 얻을 때 for문 도배를 방지하기 위해 나온 것

 

▪ 숫자 배열에서 Max 값 찾기

int[] intArr = {3, 2, 6, 10, 234};
Integer maxValue = Arrays.stream(intArr)
                            .max()
                            .getAsInt();
  • Arrays.stream()
    • 기본 배열을 IntStream 스트림으로 변환한다
  • max()
    • 결과를 Optional 객체로 반환한다
  • getAsInt()
    • int 값을 반환한다.
    • max값이 없는 경우에는 NoSuchElementException 예외가 발생할 수 있다