반응형
문제 링크
코딩테스트 연습 - 실패율 | 프로그래머스 (programmers.co.kr)
문제 풀이
코드 1
public int[] solution(int N, int[] stages) {
List<Integer> stagesList = new ArrayList<Integer>();
List<Double> failureList = new ArrayList<>();
List<Integer> answerList = new ArrayList<>();
for(int stage : stages) stagesList.add(stage);
for(int i=1; i<=N; i++) {
int challenger = stagesList.size();
Iterator<Integer> iter = stagesList.iterator();
while(iter.hasNext()) {
if(iter.next() <= i) iter.remove();
}
double failureRate = (double)(challenger - stagesList.size()) / challenger;
failureList.add(failureRate);
for(int j=0; j<failureList.size(); j++) {
if(j == failureList.size()-1) {
answerList.add(i);
break;
}
if(failureRate > failureList.get(answerList.get(j)-1)) {
answerList.add(j, i);
break;
}
}
}
int[] answer = new int[N];
for(int i=0; i<answer.length; i++) {
answer[i] = answerList.get(i);
}
return answer;
}
statesList
각 스테이지의 도전자, 통과자를 구분하기 위한 리스트
실패한 도전자는 리스트에서 제외한다.failureList
각 스테이지 순서대로 실패율을 저장answerList
실패율이 높은 순서대로 스테이지를 저장
핵심은 실패율 저장 후 answerList에 정렬된 순서로 담는 부분입니다.void add(int index, E element)
List에 요소를 삽입하는 메소드입니다.
index를 주게 되면 해당 index 위치에 요소를 삽입합니다.
내림차순이므로 현재 스테이지의 실패율이 어떤 위치에 적합한 지 찾아 삽입합니다.
테스트 케이스 처리속도
- 🔥 최대 2058.77ms
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 체육복 java :: 탐욕법(Greedy) :: 42862 (0) | 2022.07.05 |
---|---|
프로그래머스 - 모의고사 java :: 완전탐색 (0) | 2022.07.05 |
프로그래머스 - 폰켓몬 java :: 찾아라 프로그래밍 마에스터 (0) | 2022.07.04 |
프로그래머스 - 약수의 개수와 덧셈 java :: 월간 코드 챌린지 시즌2 :: 77884 (0) | 2022.07.04 |
프로그래머스 - 3진법 뒤집기 java :: 월간 코드 챌린지 시즌1 :: 68935 (0) | 2022.07.04 |