1. 실패율
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42889
알고리즘 설명:
실패율을 구하고 Comparator로 정렬을 해주면 풀리는 문제
- 이전 스테이지를 제외한 전체 인원수로 스테이지 인원수를 나누면 실패율을 구한다.
- 실패율들을 Failure이라는 스테이 지명과 실패율 값이 들어간 객체를 만들어 list에 넣어준다.
- list를 Comparator를 사용하여 실패율을 기준으로 정렬을 한다.
- answer 배열에 순서대로 넣고 리턴해주면 끝
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class FailureRate {
public int[] solution(int N, int[] stages) {
int[] answer = {};
int nop = stages.length;
int[] count = new int[N+2];
for(int stage:stages) {
count[stage]++;
}
List<Failure> list = new ArrayList<>();
for(int i=1;i<count.length-1;i++) {
if(nop==0) {
list.add(new Failure(i,0));
continue;
}
list.add(new Failure(i, (double)count[i]/nop));
nop -= count[i];
}
Collections.sort(list,new Comparator<Failure>() {
@Override
public int compare(Failure o1, Failure o2) {
if(o1.failure==o2.failure)return o1.stage - o1.stage;
return o1.failure - o2.failure>0? -1:1;
}
});
answer = new int[list.size()];
for(int i=0;i<answer.length;i++) {
answer[i]=list.get(i).stage;
}
return answer;
}
public class Failure{
int stage;
double failure;
public Failure(int stage,double failure) {
this.stage =stage;
this.failure = failure;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
'알고리즘 > 문제풀이' 카테고리의 다른 글
2019 카카오 블라인드 코딩테스트 (프로그래머스, Java, 길 찾기 게임) (0) | 2019.12.15 |
---|---|
2019 카카오 블라인드 코딩테스트 (프로그래머스, Java, 무지의 먹방 라이브) (0) | 2019.12.08 |
2018 카카오 블라인드 코딩테스트 3차(프로그래머스, 모든 문제, Java) (0) | 2019.11.23 |
2018 카카오 블라인드 코딩테스트 1차(프로그래머스, 모든 문제, Java) (0) | 2019.11.14 |
단속 카메라(프로그래머스, Java) (0) | 2019.11.03 |
댓글