p.361
방법 1
def solution(N, stages):
stop = [0] * (max(stages)+1)
stop_ratio = []
people = len(stages)
result=[]
for i in range(people):
stop[stages[i]] += 1
for i in range(1, N+1):
if people==0:
stop_ratio.append((i,0))
continue
ratio=stop[i]/people
people -= stop[i]
stop_ratio.append((i, ratio))
stop_ratio.sort(key=lambda x: (-x[1]))
for i in range(len(stop_ratio)):
result.append(stop_ratio[i][0])
return result
* stop_ratio를 구하는 과정에서 people이 0이 됐을 때를 continue로 넘어가주지 않으면 런타임 에러 발생
방법 2
def solution(N, stages):
answer=[]
people=len(stages)
for i in range(1, N+1):
count = stages.count(i)
if people==0:
fail=0
else:
fail=count/people
answer.append((i,fail))
people-=count
answer=sorted(answer,key=lambda x:(-x[1],x[0]))
answer=[i[0] for i in answer]
return answer
'코딩 테스트 > 정렬' 카테고리의 다른 글
카드 정렬하기 (0) | 2021.02.15 |
---|---|
안테나 (0) | 2021.02.15 |
국영수 (0) | 2021.02.12 |
두 배열의 원소 교체 (0) | 2021.02.11 |
성적이 낮은 순서로 학생 출력하기 (0) | 2021.02.11 |
댓글