https://school.programmers.co.kr/learn/courses/30/lessons/42889#
Map<Integer, Double> map = new HashMap<>();
1:1/8 , 2:1/2 와 같은 데이터를 저장하기 위해서 해쉬맵사용
if(total == 0 && fail == 0) total = 1; //스테이지에 도달한 유저가 없는 경우 실패율 0
test case: 2 [1,1,1,1][1,2]가 나오기 위해선 필요함
map.put("A", 1000);
map.containsKey(object key)
map.ketset();Map에 저장되어있는 키(Key)들을 반환
ex)
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println("[key]:" + key + ", [value]:" + value);
}
map.get(object key);
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
Map<Integer, Double> map = new HashMap<>();
for (int i = 1; i <= N; i++) {
double total = 0;
double fail = 0;
for (int j = 0; j < stages.length; j++) {
if(i <= stages[j]) total++;
if(i == stages[j]) fail++;
}
if(total == 0 && fail == 0) total = 1; //스테이지에 도달한 유저가 없는 경우 실패율 0
// 0/1 =0.0 / 1/0은 무한대
map.put(i, fail/total);
}
int[] answer = new int[N];
for (int i = 0; i < N; i++) {
double max = -1;
int rKey = 0;
for (int key : map.keySet()){
if(max < map.get(key)){
max = map.get(key);
rKey = key;
}
}
answer[i] = rKey;
map.remove(rKey);
}
return answer;
}
}