[프로그래머스 42889] 실패율
문제
나의 접근방법
stages 배열을 for 루프를 돌면서 각 단계별 clear 한사람들을 카운팅했다.
N단계로 되어있지만 stages에 N 단계보다 큰 사람들이 존재했기 때문에 이 사람들은 N+1인덱스에 카운팅을 해주었다.
이번엔 N번부터 1번까지 for 루프를 또 돌면서 각 단계 도달인원을 카운팅했고, 동시에 실패율을 계산해서 rate라는 배열에 이차배열형태로 담았다.
그리고 rate 실패율 순서로 정렬하고, map을 이용해서 단계를 배여롤 리턴했다.
나의 풀이
function solution(N, stages) {
var answer = [];
let clear = new Array(N+2).fill(0);
let player = new Array(N+2).fill(0);
let rate = []
for (var i =0; i < stages.length ; i++) {
if (stages[i] > N) {player[N+1]++}
else {clear[stages[i]]++};
}
for (var j = N; j > 0 ; j--) {
player[j] = clear[j] + player[j+1]
rate.push([j, clear[j]/player[j]])
}
answer = rate.sort(function ([a,b], [c,d]) {return d-b||a-c})
.map(item => item[0])
return answer;
}
다른 풀이 방법 & 배운점
2차원배열일때, 요소배열의 값으로 정렬할 수도 있었다. 이 점은 파이썬보다 쉬운것 같다.
나랑 비슷하게 푼 사람들 중에는 0으로 채워진 빈 배열을 이용하지 않고, 트리형태로, 단계, 실패율, 도달율을 한 배열에 담는 방법이 있었는데 이방법이 데이터를 덜 차지해서 효율적이라고 생각한다.
Author And Source
이 문제에 관하여([프로그래머스 42889] 실패율), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@parkdasol/프로그래머스-42889-실패율저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)