나의 풀이
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
List<Integer> intList
= Arrays.stream(emergency)
.boxed()
.collect(Collectors.toList());
Collections.sort(intList, Collections.reverseOrder());
System.out.println(intList);
for(int i=0; i<emergency.length; i++) {
int idx=intList.indexOf(emergency[i]);
answer[i] = idx+1;
}
return answer;
}
}
▶ 리스트에서 해당요소 지점의 idx+1은 등수를 나타낸다.
▶ answer[i]의 위치와 emergency[i] 위치가 동기화 되어 있다.★★
다른 사람의 풀이
public class Solution {
public int[] solution(int[] emergency) {
return Arrays.stream(emergency)
.map(i -> Arrays.stream(emergency)
.boxed().sorted(Comparator.reverseOrder())
.collect(Collectors.toList())
.indexOf(i) + 1)
.toArray();
}
}
▶ Arrays.stream(emergency) 의 반환타입은 IntStream이다.
▶ boxed().sorted(Comparator.reverseOrder())의 반환타입은 Stream<Integer>이다.
▶ collect(Collectors.toList())의 반환타입은 List<Integer> 이다.
▶ indexOf(i) 해당객체i의 인덱스(위치)를 반환한다.
▶ 끝의 반환타입이 IntStream인 경우에 int배열로 반환하고자 할때에는
toArray()에 별도의 매개변수가 필요없다.
'프로그래머스(자바) > LV.0(자바)' 카테고리의 다른 글
이진수 더하기 (0) | 2022.11.26 |
---|---|
한 번만 등장한 문자→frequency(), sorted(), groupingBy()★★★ (0) | 2022.11.26 |
7의 개수★ →"k의 개수"문제와 유사 (0) | 2022.11.26 |
특이한 정렬★★★ sorted(), compareTo(), compare(A, B) (0) | 2022.11.26 |
가까운 수 → "특이한 정렬"과 유사 + abs(n-array[i]) 갱신논리 (0) | 2022.11.25 |