문제 설명
정수 배열 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;
}
}
쉽고 좋은 표현이라 생각한다.