문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42889
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드:
import java.util.*;
class Stage implements Comparable<Stage>{
int number;
float rate;
public Stage(int number, float rate) {
this.number = number;
this.rate = rate;
}
@Override
public int compareTo(Stage o) {
int compare = Float.compare(o.rate, rate);
if(compare == 0) return number - o.number;
else return compare;
}
}
class Solution {
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
int[] count = new int[N + 2]; // count[i]: i 스테이지에 도달하고 멈춘 인원
List<Stage> list = new ArrayList<>();
for (int i = 0; i < stages.length; i++) {
count[stages[i]]++;
}
for (int i = 1; i <= N; i++) {
int sum = 0; // i 스테이지에 도달한 플레이어 수 (넘어간 플레이어 포함)
for (int j = i; j <= N + 1; j++) {
sum += count[j];
}
list.add(new Stage(i, calc(count[i], sum)));
}
Collections.sort(list);
for (int i = 0; i < N; i++) {
answer[i] = list.get(i).number;
}
return answer;
}
private float calc(int cnt, int sum) {
if(sum == 0) return 0f;
return ((float) cnt) / sum;
}
}
'PS > 프로그래머스' 카테고리의 다른 글
프로그래머스 2019 KAKAO BLIND RECRUITMENT - 후보키[JAVA] (0) | 2023.10.27 |
---|---|
프로그래머스 2019 KAKAO BLIND RECRUITMENT - 오픈채팅방[JAVA] (0) | 2023.10.26 |
프로그래머스 2018 KAKAO BLIND RECRUITMENT - 방금그곡[JAVA] (0) | 2023.10.24 |
프로그래머스 2018 KAKAO BLIND RECRUITMENT - 압축[JAVA] (1) | 2023.10.23 |
프로그래머스 2018 KAKAO BLIND RECRUITMENT - N진수 게임[JAVA] (1) | 2023.10.21 |