유형 : 구현
풀이 시간 : 15분
def solution(N, stages):
fail = [[i+1,0] for i in range(N)]
rate = [[0,0] for i in range(N+1)]
for people in stages:
for i in range(0, people):
rate[i][1] += 1
rate[people-1][0] += 1
del rate[len(rate)-1]
for i in range(len(rate)):
if rate[i][1] == 0:
continue
else:
fail[i][1] = rate[i][0] / rate[i][1]
fail.sort(key = lambda x : x[1], reverse = True)
return [fail[i][0] for i in range(len(fail))]
로직은
fail = stage number와 실패율을 담는 list
rate = [스테이지에 도달하였으나 해결 못한 사람의 수, 스테이지에 도달한 사람의 수] 를 담는 list
먼저 stages 배열을 순회하며 rate list를 채운다.
해당 숫자까지 스테이지에 도달한 사람의 수는 +1씩 해주고,
해당 숫자의 index의 스테이지를 해결 못한 사람의 수를 +1 해준다.
분모가 0인지 체크하고 (이 경우 도달한 사람이 0명, 즉 실패율은 0)
rate를 계산해 준다.
계산한 rate를 기준으로 정렬 후 스테이지 번호를 return한다.
'프로그래머스 > Lv. 1' 카테고리의 다른 글
42. 기사단원의 무기 ★★ (약수의 개수) (0) | 2024.07.16 |
---|---|
41. 옹알이 (2) (0) | 2024.07.16 |
39. 소수 찾기 ★ (소수 판별 알고리즘) (1) | 2024.07.16 |
38. 소수 만들기 (소수 판별 알고리즘) (0) | 2024.07.16 |
37. 과일 장수 (1) | 2024.07.14 |