반응형
풀이 >
스테이지별 실패율을 계산하고
몇번째 스테이지의 실패율인지 Map으로 기록
실패율로 스테이지를 정렬하고 출력하기!
Collection프레임워크를 int[]로 바꾸기
.stream().mapToInt(i->i).toArray();
기억하기!
import java.util.*;
public class Programmers15 {
public static void main(String[] args) {
//테스트용 입력 정의
int N = 5;
int[] stages = {2, 1, 2, 6, 2, 4, 3, 3};
//스테이지별 실패율 기록 배열
Double[] successRate = new Double[N];
//스테이지는 1부터 시작함으로 1~N
//각 스테이지의 실패율을 계산에 배열에 입력
for (int i = 1; i <= N; i++) {
double success = 0.0;
double fail = 0.0;
for (int stage : stages) {
if (i == stage) fail++;
else if (i < stage) success++;
}
if (success == 0 && fail == 0) successRate[i - 1] = 0.0;
else successRate[i - 1] = fail / success;
}
//스테이지 순서에 따른 실패율을 저장하기위한 Map
Map<Integer, Double> result = new HashMap<>();
//key값을 스테이지로 정의. 스테이지 1부터 계산된 실패율을 저장
for (int i = 1; i <= successRate.length; i++)
result.put(i, successRate[i - 1]);
//스테이지를 실패율로 내림차순 정렬
ArrayList<Integer> keySetList = new ArrayList<>(result.keySet());
keySetList.sort((o1, o2) -> result.get(o2).compareTo(result.get(o1)));
//실패율로 내림차순 정렬된 ArrayList를 int[]로 변환
int[] result2 = keySetList.stream().mapToInt(i -> i).toArray();
//출력 테스트
//Arrays.stream(result2).forEach(System.out::println);
}
}
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[JAVA] 프로그래머스 - 키패드 누르기 (0) | 2021.08.23 |
---|---|
[JAVA] 프로그래머스 - 숫자 문자열과 영단어 (0) | 2021.08.22 |
[JAVA]프로그래머스 - 문자열 내 마음대로 정렬하기 (0) | 2020.12.06 |
[JAVA]프로그래머스 - 문자열 내 p와 y의 개수 (0) | 2020.12.05 |
[JAVA]프로그래머스 - 크레인 인형뽑기 게임 (0) | 2020.12.02 |