CodeingTestPrac/Java Coding Test
카카오 블라인드 2019 실패율 [자바 코테 준비 3일차]
sung.hyun.1204
2023. 5. 5. 19:59
자바 코드 먼저 보자
void kakao19Final_test() {
//given
int N = 5;
int[] stages = {2, 1, 2, 6, 2, 4, 3, 3};
Arrays.sort(stages); // Arrays.stream(stages).forEach(System.out::println);
System.out.println(Arrays.stream(stages)
.mapToObj(Integer::toString)
.collect(Collectors.joining(" ")));
Map<Integer,Integer> clearStage = new HashMap<>();
for(int item : stages){
clearStage.put(item,clearStage.getOrDefault(item,0)+1);
}
System.out.println(clearStage);
double[] ratio = new double[N+1];
int counted = 0;
for(int i = 1 ; i <N+1 ; i++) {
int item = clearStage.getOrDefault(i,0);
if(item != 0 && (stages.length - counted) != 0 ){
ratio[i] = (double) item /(stages.length - counted);
counted += item;
}
}
System.out.println(Arrays.stream(ratio)
.mapToObj(Double::toString)
.collect(Collectors.joining(" ")));
List<Integer> anar = new ArrayList();
for(int i = 1 ;i<N+1;i++){
anar.add(i);
}
Collections.sort(anar,(a,b)->Double.compare(ratio[b],ratio[a]));
int[] answer = anar.stream().mapToInt(i->i).toArray();
System.out.println(answer);
}
준비를 하면서 느낀것이 자료 구조 Map 을 잘 모르겠으면 class 를 프로그래머스 에서 생성후 override 를 하는 방식도 있지만 비추이다.
자료형 doble 이 float 보다 크다.
Arrays.stream 은 double, int ,long 만 제공을 하니 참고하자.
완벽한데 시간 초과가 나면 collection 으로 전환하자.