728x90
반응형
SMALL
⏬문제와 예시
⏬문제 해결 코드
주석에 문제를 어떻게 풀어야 할지 적어두었습니다.
package step01;
import java.util.*;
public class FailureRate {
public static void main(String[] args) {
int N = 5;
int[] stages= {2, 1, 2, 6, 2, 4, 3, 3};
//스테이지별 실패율을 담을 map생성
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++;
}
//만약 해당 스테이지에 유저가 없거나 실패한 사람이 없으면 1로 반환
if(total == 0 && fail == 0) total = 1;
//각 스테이지벼롤 실패율을 담음
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에서 삭제(중복으로 확인을 방지하기 위함)
map.remove(rKey);
}
}
}
풀이 방식에는 크게 차이가 있겠지만 map을 이용해 순위를 지정해주는 방식이 중요할 것 같네요
728x90
반응형
SMALL
'문제 풀이 > Programmers' 카테고리의 다른 글
[자바]120875. 프로그래머스 평행 코드 첨부 (5) | 2023.08.12 |
---|---|
[자바]120956 프로그래머스 옹알이 문제 코드 첨부 (1) | 2023.08.12 |
120875. 평행 (자바) 문제에 함정이 있습니다 꼭 읽어보세요! (0) | 2023.08.06 |
120866. 안전지대 자바 (2) | 2023.08.01 |
181916. 주사위 게임 3 자바 (0) | 2023.07.31 |