알고리즘
[프로그래머스] 실패율
j9972
2023. 4. 6. 17:35
728x90
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42889
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 접근
1. 실패율 = ( 도달 O & 클리어 X ) / ( 도달 O )
2. 하나의 스테이지에 도달한 모든 유저가 통과를 했을 경우 즉, 특정 스테이지의 실패율이 0 일 가능성을 배제하면 안된다
3. len(stages) 가 총 유저 수라는 사실을 잊으면 안된다.
4. 나는 실패율 조정시, 분모의 값 부분에서 혼동이 있었는데 len(stages) 을 복사해서 cnt 값을 매 스테이지마바 복사값에서 빼주면 된다
3. 풀이
def solution(N, stages):
ans = []
res = []
nStage = 0
stage = len(stages) # 실패율 분모 조정을 위한 변수
while True:
if nStage == N:
break
nStage += 1
cnt = 0
for i in stages:
if i == nStage:
cnt += 1 # 도달한 사람
if cnt == 0:
res.append([0,nStage])
else:
res.append([cnt/stage, nStage])
stage -= cnt # 분모 조저을 위함
res = sorted(res, key=lambda x: -x[0])
for i in res:
ans.append(i[1])
return ans