본문 바로가기
코딩테스트 연습

가장 큰 수 찾기

by 신재은👩🏼‍💻 2024. 4. 13.

문제 설명

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array 원소 ≤ 1,000
  • array에 중복된 숫자는 없습니다.

 

입출력 예

array result
[1, 8, 3] [8, 1]
[9, 10, 11, 8] [11, 2]

import java. util.OptionalInt;
import java.util.Arrays;
import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] array) {
        OptionalInt opMaxInt = Arrays.stream(array).max();
        if(opMaxInt.isPresent()) {
            int maxValue = opMaxInt.getAsInt();
            int maxIndex = IntStream.range(0, array.length)
                .filter(i -> array[i] == maxValue)
                .findFirst()
                .getAsInt();
            
            return new int[]{maxValue, maxIndex};
        }
        return new int[]{-1,-1};
    }
}


optionalint를 배움.

filter했을 때 intstream 형태의(?) optionalint가 리턴되기 때문에 findfirst(findany랑 차이 없음), getasint 해 줘야 된다는 것,

원하는 결과가 없을 때 -1 형태로 리턴하는 관용적 표현이 가능하다는 것을 배움.

 

class Solution {

    public int[] solution(int[] array) {

        int[] answer = new int[2];

 

        for(int i=0;i<array.length;i++) {

            if(array[i] > answer[0]) {

                answer[0] = array[i];

                answer[1] = i;

            }

        }

 

        return answer;

    }

}

 

쉽고 좋은 표현이라 생각한다.

'코딩테스트 연습' 카테고리의 다른 글

콜라츠 수열 만들기  (0) 2024.04.13
약수 구하기  (0) 2024.04.13
코드 처리하기  (0) 2024.04.13
9로 나눈 나머지  (0) 2024.04.13
접미사 배열  (0) 2024.04.12