728x90
def solution(N, stages):
answer = []
length = len(stages)
for i in range(1, N+1):
count = stages.count(i)
if length == 0:
fail = 0
else:
fail = count/length
answer.append((i, fail)) # 실패율이 0이어도 필요함
length -= count
answer.sort(key = lambda x : x[1],reverse = True)
answer = [i[0] for i in answer]
return answer
유형 : 정렬
원래 풀이는, 스테이지 도달한 사람을 센 array, 실패율 array, 실패한 사람 array 각각 만들어줬었는데 시간 초과가 났다 ㅠㅠ
핵심은 현재 i 번쨰 스테이지에 머무르 사람을 매번 스테이지를 확인 할 때마다 전체 인원수에서 빼주는 것이다 !!!
그러면 매번 for문으로 스테이지에 몇명 도달했는지 확인하지 않아도 된다 !!!
예시에서,
N = 5, [2, 1, 2, 6, 2, 4, 3, 3] (전체 인원수 : 8)
스테이지 1 에 머무르사람은 1명, 전체 인원수는 현재 8명이다.=> 실패율 1/8
그러면 사실상 나머지 7명은 스테이지 1을 통과한 사람이다
당연히 ~ 스테이지 2에 도달한 사람은 7명이고, 스테이지 2에 머무르사람은 3명이다. => 실패율 : 3/7
https://programmers.co.kr/learn/courses/30/lessons/42889#
728x90
'Algorithm (PS)' 카테고리의 다른 글
[카카오2020] 가사 검색 in Python (0) | 2022.01.25 |
---|---|
[백준] 2110 공유기 설치 in Python (0) | 2022.01.25 |
[백준] 10825 국영수 in Python + lambda 함수 정리 (0) | 2022.01.24 |
[백준] 16234 인구이동 in Python (0) | 2022.01.23 |
[백준] 1451 직사각형으로 나누기 in Python (0) | 2022.01.23 |