728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42889?language=javascript
코드
function solution(N, stages) {
let answer = [];
let tmp = [];
let b = stages.length; //n번째 스테이지에 도달한 사람
stages.sort((a,b) => (a-b)); //stages배열 오름차순 정렬
for (let i=1; i<N+1; i++) { //stage는 1부터 시작이니 i=1부터
let a = stages.reduce((count, element) => count + (i === element), 0); //n번째 스테이지에 도달했지만 성공하지 못한 사람
tmp.push([i, failure(a,b)]); //실패율 구하고 tmp에 각 스테이지와 실패율 push
b = b-a; //배열 전체 길이에서 n번째 스테이지에 도달만 한 사람들 빼주기
}
tmp.sort((a, b) => b[1]-a[1]); //실패율 내림차순에 따라 배열 정렬
for (let i=0; i<tmp.length; i++) { //내림차순 정렬된 tmp의 스테이지를 answer에 push
answer.push(tmp[i][0]);
}
function failure(a,b) { //실패율 함수
return a/b;
}
return answer;
}
후기
- 배열을 잘 이용하면 쉽게 풀 수 있는 문제였다
- 로직을 어떻게 짜냐에 따라 다양한 코드가 나오는 것을 알 수 있는 문제였다
- 내 풀이에서 길이를 좀 줄이려면 굳이 함수를 안 만들어도 됐을 것 같다
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 같은 숫자는 싫어 / JavaScript (0) | 2022.01.12 |
---|---|
[Programmers] 오픈채팅방 / JavaScript (0) | 2022.01.11 |
[Programmers] 두 개 뽑아서 더하기 / JavaScript (0) | 2022.01.08 |
[Programmers] 124 나라의 숫자 / JavaScript (0) | 2022.01.08 |
[Programmers] 기능개발 / JavaScript (0) | 2022.01.07 |