일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 비트코인
- spring boot
- modern c++
- Gem
- python
- Spring JPA
- Baekjoon
- c
- Cars
- 자바
- java
- 백준
- 암호화폐투자
- Investing
- finance & economics
- SECS-II
- 프로그래머스
- CS
- 지브리필터
- coins
- 회원가입
- Digital Marketing
- Spring
- Computer Science
- 파이썬
- C++
- SECS/GEM
- SECS
- programmers
- ai이미지변환
Archives
- Today
- Total
비버놀로지
[Programmers 프로그래머스] 42889 실패율 본문
반응형
programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
각 각의 스테이지에 실패해서 있는 횟수를 추가해 준다.
위의 예제를 보면 1에 한명 2에 3명 3에 3명 4에 1명 6에 1명이 있는 것을 알 수 있다. 이러한 값을 Stage라는 클래스를 만들어서 실패율과 스테이지를 저장해 준다.
그렇게 만들어진 Stage 클래스를 이용해서 1스테이지에 한명이 실패해 있는 상태이므로 실패율은 1/8을 스테이지 클래스를 이용해서 1에 실패율은 1/8을 넣어준다.
그리고 2스테이지는 1스테이지에서 실패한 1명을 빼고, 3/7과 함께 리스트를 넣어준다.
그렇게 만들어진 리스트를 comparable을 이용해서 정렬을 해주고, 결과값에 넣어주어 출력해 준다.
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
double[] temp = new double[N + 1];
ArrayList<Stage> arrlist = new ArrayList<Stage>();
int size = stages.length;
for (int i = 0; i < stages.length; i++) {
if (stages[i] <= N) {
temp[stages[i]]++;
} else
continue;
}
for (int i = 1; i <= N; i++) {
double k = temp[i];
if (size == 0) {
temp[i] = 0;
} else {
temp[i] /= size;
}
size -= k;
arrlist.add(new Stage(i, temp[i]));
}
arrlist.sort(Stage::compareTo);
for (int i = 0; i < arrlist.size(); i++) {
answer[i] = arrlist.get(i).stage;
}
return answer;
}
}
class Stage implements Comparable<Stage>{
int stage;
double failure;
public Stage(int stage, double failure) {
super();
this.stage = stage;
this.failure = failure;
}
@Override
public int compareTo(Stage o) {
if(this.failure == o.failure) {
return this.stage < o.stage ? -1 : 1;
}else {
return this.failure>o.failure?-1:1;
}
}
}
반응형
'ALGORITM > JAVA' 카테고리의 다른 글
[BAEKJOON 백준] 1000 A+B (0) | 2021.01.10 |
---|---|
[Programmers 프로그래머스] 17682 [1차] 다트 게임 (0) | 2021.01.10 |
[Programmers 프로그래머스] 17681 [1차] 비밀지도 (0) | 2021.01.10 |
[Programmers 프로그래머스] 12982 예산 (0) | 2021.01.08 |
[Programmers 프로그래머스] 12969 직사각형 별찍기 (0) | 2021.01.08 |
Comments