def solution(N, stages):
answer = []
result = []
for step in range(1, N+1):
fail = 0
play = 0
for stage in stages:
if stage == step:
fail += 1
play += 1
elif stage > step:
play+=1
else:
pass
if play == 0:
result.append((step, 0))
else:
result.append((step, fail/play))
result.sort(key = lambda x : (-x[1], x[0]))
for step in result:
answer.append(step[0])
return answer
문제풀이
특별한 알고리즘이 필요하지 않은 문제였다. 나는 단계를 오름차순으로 탐색하면서 통과한 사람과 실패한 사람을 각각 구하며 실패율을 계산했다.
다른 사람 풀이 중에는 실패한 사람을 리스트에서 제외해 다음 단계의 실패율을 조사할 때 시간 복잡도를 낮추도록 유도한 풀이도 있었다.
알고리즘
출처
문제: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges