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
- 코어자바스크립트
- DP
- 2023카카오블라인드코테
- 알고리즘 문제풀이
- 타겟넘버
- 과제진행하기
- solved.ac골드
- pccp기출문제
- 최소스패닝트리
- Lv3
- Lv2
- [pccp 기출문제]
- solved.ac플래티넘
- 정렬
- 지도 여러개
- 백준알고리즘
- 두원사이의정수쌍
- 알고리즘문제풀이
- 우박수열정적분
- JS스터디
- 프로그래머스
- 5강클로저
- 이중지도
- div2개
- JS
- c++
- React.StrictMode
- 비트마스크
- 스택
- 백준 알고리즘
Archives
- Today
- Total
호지
[프로그래머스] 실패율 문제풀이 JS 본문
stages를 탐색해서 해당 스테이지에 남아있는 사용자의 수를 stayUserCount배열에 저장한다.
이후 1부터 N까지 순회를 하면서,
해당 스테이지를 도전한 유저의 수에 남아있는 유저의 수를 나누면
해당 스테이지의 실패율을 구할 수 있다.
*해당스테이지를 클리어한 유저의 수는 초깃값은 stages의 전체길이, 즉 전체 유저의 수이고,
1부터 N까지 순회를 할때 이전 스테이지에서 남아있던 유저의 수를 빼면
현재 스테이지에 도전한 유저의 수를 구할 수 있다.
(해당 스테이지를 clear한게 아니라 시도한 유저이기 때문에 해당 스테이지에 남아있는 유저도 더해야함)
failPercentList를 채우고 난 후, failPercent를 기준으로 내림차순 정렬을 한 후,
정렬된 failPercent에서 stage의 number만 반환하도록 map을 돌리면
스테이지 별로 실패율을 계산한 결과를 얻을 수 있다
function solution(N, stages) {
let stayUserCount = new Array(N + 2).fill(0)
failPercentList = []
for (const stage of stages) {
stayUserCount[stage]++
}
let clearUserCount = stages.length
for (let n = 1; n <= N; n++) {
clearUserCount -= stayUserCount[n - 1]
failPercentList[n - 1] = {number: n, failPercent: stayUserCount[n] / clearUserCount}
}
failPercentList.sort((a, b) => b.failPercent - a.failPercent)
return failPercentList.map((stage) => stage.number)
}
https://school.programmers.co.kr/learn/courses/30/lessons/42889
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 모의고사 문제풀이 JS (0) | 2023.08.08 |
---|---|
[프로그래머스] 체육복 문제풀이 JS (0) | 2023.08.08 |
[프로그래머스] 두 개 뽑아서 더하기 문제풀이 JS (0) | 2023.08.07 |
[프로그래머스] 3진법 뒤집기 문제풀이 JS (0) | 2023.08.07 |
[프로그래머스] 내적 문제풀이 JS (0) | 2023.08.05 |
Comments