문제
내가 작성한 정답
import java.util.*;
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length];
Integer[] arr = new Integer[emergency.length];
int idx=0;
for(int i:emergency) arr[idx++] = i;
Arrays.sort(arr,Collections.reverseOrder());
for(int j=0;j<emergency.length;j++){
for(int i=0; i<arr.length; i++){
if(arr[i]==emergency[j]) answer[j] = i+1;
}
}
return answer;
}
}다른 사람들의 정답
class Solution {
public int[] solution(int[] emergency) {
int[] answer = new int[emergency.length]; // 응급도 순위를 저장할 배열 (크기: emergency와 동일)
// i번째 사람의 순위를 계산
for(int i = 0; i < answer.length; i++){
if(answer[i] != 0){ // 이미 순위가 계산된 경우 (중복 처리 방지)
continue; // 건너뛰기
}
int idx = 1; // i번째 사람의 순위 초기값 (1등부터 시작)
// i번째 사람보다 응급도가 높은 사람 수 세기
for(int j = 0; j < answer.length; j++){
if(emergency[i] < emergency[j]){ // i번째 < j번째 응급도
idx++; // 나보다 높은 사람이 있으면 내 순위 밀림
}
}
answer[i] = idx; // i번째 사람의 최종 순위 저장
}
return answer; // 각 사람의 순위 배열 반환
}
}
import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] e) {
return Arrays.stream(e)
.map(i -> Arrays.stream(e)
.boxed()
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList()).indexOf(i) + 1)
.toArray();
}
}Share article