📍 문제 설명
https://programmers.co.kr/learn/courses/30/lessons/42889
💡 접근
각 실패율에 대한 스테이지번호를 저장하기 위한 Stage 클래스를 정의하여 정렬 후 출력해주었다.
👩💻 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] stages = {2,1,2,6,2,4,3,3};
ArrayList<Stage> list = new ArrayList<Stage>();
int[] answer = new int[n];
Arrays.sort(stages);
int cnt = 0;
int nowStage = stages.length;
//현재 도전중인 스테이지
for(int i = 0; i < n; i++) {
for(int j = 0; j < stages.length; j++) {
//현재 도전중인 사용자 수 계산
if(stages[j] == i+1) cnt++;
}
//실패율 계산
list.add(new Stage(i+1, (double) cnt/nowStage));
nowStage -= cnt;
cnt = 0;
}
Collections.sort(list);
for(int i = 0; i < list.size(); i++) {
answer[i] = list.get(i).stageNum;
}
System.out.println(Arrays.toString(answer));
}
private static class Stage implements Comparable<Stage> {
private int stageNum;
private double failPercent;
public Stage(int stageNum, double failPercent) {
this.stageNum = stageNum;
this.failPercent = failPercent;
}
@Override
public int compareTo(Stage o) {
if(this.failPercent == o.failPercent) return this.stageNum - o.stageNum;
return Double.compare(o.failPercent, this.failPercent);
}
@Override
public String toString() {
return "Stage{" +
"stageNum=" + stageNum +
", failPercent=" + failPercent +
'}';
}
}
}
'Algorithm > 이코테' 카테고리의 다른 글
27.정렬된 배열에서 특정 수의 개수 구하기 (0) | 2022.01.10 |
---|---|
26.카드 정렬 (0) | 2022.01.10 |
24.안테나 (0) | 2022.01.10 |
23.국영수 (0) | 2022.01.10 |
22.블록 이동하기 (0) | 2022.01.09 |