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
- static 메서드
- PriorityQueue
- FLUTTER
- 객체 배열
- 참조형 반환타입
- 오버라이딩과 오버로딩 차이점
- 운영체제의 예
- 기본형 매개변수
- 호출스택
- stateful widget
- 인스턴스 메서드
- 참조형 매개변수
- 명예의전당(1)
- webview_flutter
- stateless widget
- 이것이코딩테스트다
- this()
- 조상의 생성자
- static import문
- 오버로딩
- 프로그래머스
- 운영체제란 무엇인가
- object클래스
- stateful widget 생명주기
- 클래스 변수
- 초기화 순서
- 운영체제의 목적
- 운영체제의 분류
- this()와 참조변수 this 차이점
- 운영체제의 구조
Archives
- Today
- Total
Coram Deo
[프로그래머스] Lv.1 실패율 본문
1. 나의 풀이(선택정렬 사용)
실패율 구하는 데까지는 시간이 얼마 안걸렸는데, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 정렬하는 게 좀 오래걸렸다. 보통 자바에서 정렬할때는 Arrays.sort()를 사용했었는데, 이 문제에서는 인덱스 값을 정렬해야하니 조금 더 복잡했던 것 같다.
class Solution {
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
int clearUsers = stages.length;
double[] failureRate = new double[N];
// 실패율 구하기
for(int i=1; i<=N; i++){
int notYetClearUsers = 0;
for(int j=0; j<stages.length; j++){
if(i == stages[j]) notYetClearUsers++;
}
failureRate[i-1] = (double)notYetClearUsers / clearUsers;
clearUsers = clearUsers - notYetClearUsers;
System.out.println(failureRate[i-1]);
answer[i-1] = i;
}
// 정렬
for(int i=0; i<N-1; i++){
for(int j=i+1; j<N; j++){
if(failureRate[i] < failureRate[j]){
double valueTmp = failureRate[i];
failureRate[i] = failureRate[j];
failureRate[j] = valueTmp;
int indexTmp = answer[i];
answer[i] = answer[j];
answer[j] = indexTmp;
}else if(failureRate[i] == failureRate[j]){
if(answer[i]>answer[j]){
int equalTmp = answer[i];
answer[i] = answer[j];
answer[j] = equalTmp;
}
}
}
}
return answer;
}
}
'알고리즘 공부' 카테고리의 다른 글
[프로그래머스] Lv.1 기사단원의 무기 (0) | 2024.08.31 |
---|---|
[프로그래머스] Lv1. 문자열 내 마음대로 정렬하기 (0) | 2024.08.30 |
[프로그래머스] Lv1. K번째 수 (0) | 2024.08.30 |
[프로그래머스] Lv1. 최소 직사각형 (0) | 2024.08.30 |
[프로그래머스] JadenCase 문자열 만들기(Java) - 리팩토링 과정 (0) | 2024.07.09 |