Notice
Recent Posts
Recent Comments
Link
- Today
- Total
Archives
Tags
- 자바 #JAVA #프로그래머스 #정수 내림차순으로 배치하기
- 콜라츠 추측 #자바 #JAVA #프로그래머스
- 백준 #자바
- 최대값과 최솟값 #자바 #JAVA
- SW공학
- 빌드 에러
- 자바 #프로그래머스 #JAVA #다음 큰 숫자
- 나누어 떨어지는 숫자 배열 #자바 #JAVA #프로그래머스
- JAVA #자바 #프로그래머스 #두 정수 사이의 합
- JAVA #자바 #프로그래머스 #숫자의 표현
- 자바 #프로그래머스 #JAVA #최솟값 만들기 #코딩테스트
- IntelliJ #인텔리제이 #교육용
- JAVA #백준
- JAVA #자바 #프로그래머스 #서울에서 김서방 찾기
- JAVA #프로그래머스 #문자열 내림차순으로 배치하기
- 데이터베이스 #DB #데이터 #정의 #기본
- Java
- 게임 맵 최단거리 #자바 #JAVA #프로그래머스
- 프로그래머스
- JAVA #자바 #프로그래머스 #나머지가 1이되는 수
- JAVA #프로그래머스 #약수의 개수와 덧셈
- JAVA #핸드폰 번호 가리기 #프로그래머스 #자바
- JAVA #프로그래머스
- servlet
- 문자열 다루기 기본 #자바 #JAVA
- JAVA #코드업 #기초 100제
- 스프링 #의존성 주입 #DI
- 백준 #JAVA #자바
- 최대값과 최솟값
- Could not resolve all files for configuration
MOMONOTE
(JAVA) 프로그래머스 실패율 (2019 KAKAO BLIND RECRUITMENT) 본문
알고리즘, 코딩테스트/(JAVA)프로그래머스
(JAVA) 프로그래머스 실패율 (2019 KAKAO BLIND RECRUITMENT)
momo0503 2021. 6. 8. 20:25
여러 방법으로 시도해 봤지만
예전에 풀었던 방식으로 기록해본다.
9개월전에 참조한 코드라 어느 분의 코드 인지 잘 모르겠따......
Comparator 와 copare 메서드를 선언
import java.util.*;
//실패율을 저장하기 위해서 stage와 함께 저장해야되기때문에, 실패율을 정렬할때 실패율이 같은경우에
//는 스테이지가 작은거부터출력해야되고, 정렬한 이후 출력해야하는 답이 실패율이 아니라 스테이번호기때 때문에 class 선언
class Solution {
class Fail{
int stage;
double rate;
Fail(int stage, double rate){
this.stage =stage; this.rate =rate;
}
}
Comparator<Fail> comp = new Comparator<Fail>(){//compare 을위한 Comaparator 객체선언
public int compare(Fail a, Fail b){//compare 메서드를 구현해야함
if(a.rate < b.rate){
return 1;
}else if( a.rate> b.rate){
return -1;
}else{ //실패율이 같은경우
if(a.stage >b.stage){
return 1;
}else if(a.stage <b.stage){
return -1;
}else {
return 0;
}
}
}
};
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
List<Fail> fails = new ArrayList<Fail>();
int total = stages.length;//전체 사용자 명수
//스테이지를 순회하면서 각스테이지에 도달한 사용자를 세고, 그값을 한 배열에 저장
//배열의 크기는 스테이지개수보다 하나 더많음.
int[] users = new int[N+1];
for(int s : stages){
users[s-1]++; //1번스테이지에있는 사용자수는 0번인덱스에있음.
}
//users 를 순회하면서 각각의 스테이지에 실패율을 구하겠다.
for(int i=0 ;i<N;i++){
if(users[i]==0) fails.add(new Fail(i+1,0)); //user[i]==0 첫번쨰스테이지에 도달한 사용자수 //값이 0이면 무조건 실패율을 0으로하도록 되어있다.
else{
fails.add(new Fail(i+1,(double)users[i]/total ));
total= total-users[i];
}
}
//for문을 다돌면 각각의 스테이지의 실패율이 다구해진다.fails에 저장됨
Collections.sort(fails, comp);
for(int i=0; i<N;i++){
answer[i] = fails.get(i).stage;
}
return answer;
}
}
- compare 메서드에서
- 음수 또는 0이면 객체의 자리가 그대로 유지되며, 양수인 경우에는 두 객체의 자리가 변경된다.
'알고리즘, 코딩테스트 > (JAVA)프로그래머스' 카테고리의 다른 글
(JAVA)프로그래머스위클리 챌린지1주차_부족한 금액 계산하기 (0) | 2021.09.11 |
---|---|
프러그래머스 짝지어 제거하기 자바 (JAVA) (0) | 2021.06.25 |
(JAVA) 프로그래머스 다트게임 (2018 KAKAO BLIND RECRUITMENT) (0) | 2021.06.07 |
(JAVA) 프로그래머스 모의고사 (완전탐색) (0) | 2021.05.28 |
(JAVA)프로그래머스 음양 더하기 (월간 코드 챌린지 시즌2) (0) | 2021.05.16 |
Comments