🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
[Java] 프로그래머스 - level1 - 실패율
문제 설명 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에
geonoo.tistory.com
import java.util.*;
class Solution {
public int[] solution(int N, int[] stages) {
// 스테이지 별 실패율을 저장할 Map 생성
Map<Integer, Double> map = new HashMap<>();
// 스테이지 별 실패율 계산 (0은 없으니까 1부터)
for(int i = 1 ; i <= N ; i++) {
double total = 0; // i 스테이지에 도달한 플레이어 수
double fail = 0; // i 스테이지를 클리어하지 못한 플레이어 수
// stages 배열에서 i 스테이지에 도달한 플레이어 수와 클리어하지 못한 플레이어 수 계산
for(int j = 0 ; j < stages.length ; j++) {
if(i <= stages[j]) total++;
if(i == stages[j]) fail++;
}
// 스테이지에 도달한 플레이어 수가 0이면 실패율 0으로 저장
if(total == 0 && fail == 0) total = 1;
map.put(i, fail/total);
}
// 실패율이 높은 순으로 정렬된 스테이지 번호를 저장할 배열 생성
int[] answer = new int[N];
// Map에서 실패율이 가장 높은 스테이지 번호부터 찾아서 answer 배열에 저장
for(int i=0 ; i < N ; i++) {
double max = -1; // 현재까지 찾은 실패율 중 가장 큰 값
int rKey = 0; // 실패율이 가장 큰 스테이지 번호
// Map을 순회하면서 실패율이 가장 높은 스테이지 번호를 찾음
for(int key : map.keySet()) {
if(max < map.get(key)) {
max = map.get(key);
rKey = key;
}
}
// 실패율이 가장 높은 스테이지 번호를 answer 배열에 저장하고 Map에서 삭제
answer[i] = rKey;
map.remove(rKey);
}
return answer;
}
}
✅ 해결 아이디어
- HashMap사용해 각 스테이지 별 실패율 저장 (key : 스테이지 / value : 실패율 값)
- 실패율 계산 : stages 배열 순회하며 스테이지에 도달한 플레이어수 (i)와 클리어 못한 플레이어 수 계산
으악.. Map 쓸 생각하다가.... 쓰긴 썼는데 에러 나서 고민하다가.. 결국 다른 분 코드 보고 작성......
나중에 복습해야지...
🔺 다른 풀이들
[프로그래머스,자바] Level1 : 실패율
문제분석 stages에 담겨져있는 숫자들은 각각의 유저가 클리어하지 못한 스테이지의 번호를 나타낸 배열이다. 여기서 실패율을 구하는데 실패율은 (클리어하지못한 스테이지 번호의 수/스테이지
taehoung0102.tistory.com
List도 사용하셔서 푼...
프로그래머스 실패율 자바 java
풀이 중요한 조건 1. 실패율이 같을 경우 스테이지가 작은 번호가 우선 2. 스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0 hashMap을 이용해서 key는 스테이지 value는 실패율 값을
hacktiming.tistory.com
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
(참고)
✔ Map - getOrDefault
03-08 맵 (Map)
사람을 예로 들면 누구든지 이름 = 홍길동, 생일 = 몇 월 며칠 등으로 구분할 수 있다. 자바의 **맵(Map)**은 이러한 대응관계를 쉽게 표현할 수 있게 …
wikidocs.net
[JAVA] Map - getOrDefault 이란? 사용법 및 예제
getOrDefault - 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드 사용 방법 getOrDefault(Object key, V DefaultValue) 매개 변수 : 이 메서드는 두 개의 매개 변수를 허용합니
junghn.tistory.com
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 2] 숫자의 표현 (0) | 2023.03.31 |
---|---|
[프로그래머스/Lv. 2] 최댓값과 최솟값 (0) | 2023.03.30 |
[프로그래머스/Lv. 1] 로또의 최고 순위와 최저 순위 (0) | 2023.03.29 |
[프로그래머스/Lv. 1] [1차] 비밀지도 (0) | 2023.03.24 |
[프로그래머스/Lv. 1] [1차] 다트 게임 (0) | 2023.03.20 |