https://school.programmers.co.kr/learn/courses/30/lessons/181851
총 두 가지 방법으로 풀어 보았다. compare메소드를 사용해서 정렬한 코드인 첫 번째 코드보다 comparingInt를 이용하여 작성한 코드가 더 간단하다.
import java.util.*;
class Solution {
public int solution(int[] rank, boolean[] attendance) {
int answer = 0;
ArrayList<int[]> list = new ArrayList<>();
for(int i=0; i<rank.length; i++){
if(attendance[i] == true){
list.add(new int[]{rank[i],i});
}
}
Collections.sort(list, new Comparator<int[]>(){
@Override
public int compare(int[] a, int[] b){
return a[0]-b[0];
}
});
answer = 10000 * list.get(0)[1] + 100 * list.get(1)[1] + list.get(2)[1];
return answer;
}
}
import java.util.*;
class Solution {
public int solution(int[] rank, boolean[] attendance) {
int answer = 0;
ArrayList<int[]> list = new ArrayList<>();
for(int i=0; i<rank.length; i++){
if(attendance[i] == true){
list.add(new int[]{rank[i],i});
}
}
Collections.sort(list, Comparator.comparingInt(a -> a[0])); //배열의 첫 번째 요소를 기준으로 비교
//a라는 배열을 받아서 그 배열의 첫 번째 요소 반환
answer = 10000 * list.get(0)[1] + 100 * list.get(1)[1] + list.get(2)[1];
return answer;
}
}