728x90
반응형
문제
분석
- 랭크가 있고, 플레이어 점수가 있다 이둘을 매칭 시켜서
플레이어의 순위를 구한다. - 근사값을 구해야 된다. 근사값을 구하기 위해서
- NavigableSet 을 이용하면 된다 - NavigableSet.higher
- 주어진 값보다 큰값 - NavigableSet.lower
- 주어진 값보다 낮은 값 - NavigableSet.floor
- - NavigableSet.ceiling
구현
/*
* Complete the 'climbingLeaderboard' function below.
*
* The function is expected to return an INTEGER_ARRAY.
* The function accepts following parameters:
* 1. INTEGER_ARRAY ranked
* 2. INTEGER_ARRAY player
*/
public static List<Integer> climbingLeaderboard(List<Integer> ranked, List<Integer> player) {
// Write your code here
List<Integer> resultList = new ArrayList<>();
NavigableSet<Integer> ns = new TreeSet<>();
Map<Integer, Integer> rankInfoMap = new HashMap<>();
for (int i =0; i < ranked.size(); i++) {
ns.add(ranked.get(i));
}
ns = ns.descendingSet();
int rank = 1;
Iterator<Integer> iter = ns.iterator();
while(iter.hasNext()) {
int a = iter.next();
rankInfoMap.put(a, rank++);
}
int playerScore = 0;
for (int i = 0; i < player.size(); i++) {
playerScore = player.get(i);
if (playerScore > ns.first()) {
resultList.add(1);
} else if (playerScore < ns.last()) {
resultList.add(rankInfoMap.get(ns.ceiling(ns.last()))+1);
} else {
resultList.add(rankInfoMap.get(ns.ceiling(playerScore)));
}
}
return resultList;
}
}
결과
728x90
반응형
댓글