[TIL] 카테고리/알고리즘 문제풀기
[자바스크립트] 프로그래머스 Lv.1 실패율
티레이니
2022. 5. 27. 14:45
지문이 길다..! 손으로 끼적이며 풀어보다 잘못해석했다는걸 알고 중간에 다시했다 ㅋㅋㅋ
let answer = []
let rate = []
for (i=0; i<N; i++) { // 실패율 찾기
let challenger = stages.filter((stage) => stage>=i+1)
let unClear = challenger.filter((stage) => stage === i+1)
if(challenger.length !== 0) {
rate.push(unClear.length/challenger.length)
} else {
rate.push(0)
}
}
while (answer.length < N) { // 답안에 내림차순으로 인덱스번호+1 넣기
answer.push(rate.indexOf(Math.max(...rate))+1)
rate[rate.indexOf(Math.max(...rate))] = -1
}
처음에 풀었던 코드. N번 반복문 돌려서, i+1 번째 스테이지 도전자를 필터돌려서 찾아내고,
도전자에서 필터돌려서 아직 못 깬 사람들을 찾아냈다.
아직 해당 스테이지에 도달한 사람이 없으면 0을 임시 배열인 rate에 push,
있으면 실패율을 계산(아직못깬사람/도달한사람)해서 push 해줬다.
그다음 while 문 돌려서 답안에 실패율 높은 순서대로 rate의 인덱스번호+1 넣어주었는데,
실패율이 같을 경우 자꾸 밀려버려서 이미 push한 값은 -1로 바꿔주었다.
↓↓↓ 다른 사람 답안 참고해서 (혹은 베껴서) 2트.
for (i=0; i<N; i++) { // 실패율
let challenger = stages.filter((stage) => stage>=i+1)
let unClear = challenger.filter((stage) => stage === i+1)
if(challenger.length !== 0) {
rate.push([i+1, unClear.length/challenger.length])
} else {
rate.push([i+1,0])
}
}
rate.sort((a,b) => b[1]-a[1])
answer = rate.map((n) => n[0])
코드가 더 맘에 들어졌다.
아주 조금 더 빨라졌다.
그런데 일부 케이스에선 더 느리기도 하다.
...? 왤까. 테스트 케이스 알려줬으면
https://programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr