Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 멘딕스
- 완전탐색
- domain model
- dfs
- 그래프
- 반효경교수님
- 프로그래머스
- 집합
- lcap
- 스택
- 트리
- 가중치없는그래프
- 자바
- microflow
- 매개변수 탐색
- 이분탐색
- Recursion
- 정렬
- Sort
- Bruteforce
- 해시맵
- MySQL
- 백트래킹
- 재귀
- 자료구조
- Mendix
- git
- 알고리즘
- algorithm
- SQL
Archives
- Today
- Total
mondegreen
[240324] 알고리즘 리부트 37일차 - 프로그래머스 실패율 자바 본문
반응형
해시맵까지 잘 구현했는데 정렬하는 부분에서 꼬여버렸다. 아래 return문은 스트림 형식으로 추출해서 정렬하고 배열로 반환하는 방식이다.
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
int gamer = stages.length;
int [] cnt = new int [N+1];
for(int i : stages){
if(i<=N) cnt[i]++;
}
int [] acc = new int [N+1];
for(int i = 1; i<=N; i++){
acc[i] = acc[i-1]+cnt[i];
}
HashMap<Integer, Double> map = new HashMap<>();
for(int i = 1; i<=N; i++){
map.put(i, (gamer - acc[i - 1] == 0) ? 0 : (double) cnt[i] / (gamer - acc[i - 1]));
}
return map.entrySet().stream().sorted((o1,o2)->Double.compare(o2.getValue(), o1.getValue())).mapToInt(HashMap.Entry::getKey).toArray();
}
}
아래 코드는 위 코드가 한 눈에 들어오지 않는 경우를 위해 구현...한 것으로 실패율을 기준으로 내림차순 정렬한 스테이지가 들어갈 list 를 생성해서 처리한 방식이다. 일단 실패율을 기록한 map에 스테이지들을 먼저 기본으로 넣어준다. 그 다음 map의 값을 기준으로 내림차순 정렬해서 order list에 반영하도록 한다. 이를 다시 int 배열로 변환해준다. 재밌었다..
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
int gamer = stages.length;
int [] cnt = new int [N+1];
for(int i : stages){
if(i<=N) cnt[i]++;
}
int [] acc = new int [N+1];
for(int i = 1; i<=N; i++){
acc[i] = acc[i-1]+cnt[i];
}
HashMap<Integer, Double> map = new HashMap<>();
for(int i = 1; i<=N; i++){
map.put(i, (gamer - acc[i - 1] == 0) ? 0 : (double) cnt[i] / (gamer - acc[i - 1]));
}
List<Integer> order = new ArrayList<>(map.keySet());
Collections.sort(order, new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2){
return Double.compare(map.get(o2),map.get(o1));
}
});
return order.stream().mapToInt(Integer::intValue).toArray();
}
}
반응형
'알고리즘 풀이 및 리뷰 > 프로그래머스' 카테고리의 다른 글
[240326] 알고리즘 리부트 39일차 - 프로그래머스 올바른 괄호 자바 (0) | 2024.03.26 |
---|---|
[240325] 알고리즘 리부트 38일차 - 프로그래머스 방문 길이 자바 (1) | 2024.03.25 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 행렬의 곱셈 자바 (0) | 2024.03.24 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 모의고사 자바 (0) | 2024.03.24 |
[240324] 알고리즘 리부트 37일차 - 프로그래머스 두 개 뽑아서 더하기 자바 (0) | 2024.03.24 |