실패율

채종윤·2023년 8월 15일
0

📔 문제 설명

https://school.programmers.co.kr/learn/courses/30/lessons/42889#


📝 문제 풀이

1.

Map<Integer, Double> map = new HashMap<>();
1:1/8 , 2:1/2 와 같은 데이터를 저장하기 위해서 해쉬맵사용

2.

if(total == 0 && fail == 0) total = 1; //스테이지에 도달한 유저가 없는 경우 실패율 0
test case: 2 [1,1,1,1][1,2]가 나오기 위해선 필요함

3. 해쉬맵 메소드

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;
}
}
profile
안녕하세요. 백앤드 개발자를 목표로 하고 있습니다!

0개의 댓글