Python(알고리즘,문제풀이)/프로그래머스(입문100제)
코딩테스트입문 / 등수 매기기
박혀노
2023. 8. 7. 09:22
728x90
📚문제
📝풀이
def solution(score):
avg_score = [sum(i)/len(i) for i in score]
sorted_avg_score = sorted(avg_score,reverse=True)
result = [sorted_avg_score.index(i)+1 for i in avg_score]
return result
이전 문제인 "특이한 정렬"과 비슷한 정렬 문제이다
차이점은
문제에서 주어진 numlist를 정렬해서 반환하는 것이 아니라
주어진 score의 평균들을 정렬하여 반환하는 것이다
그렇기 때문에
1) 입력받는 score들의 평균 구하기
2) 그 평균값들을 정렬하기
3) 정렬된 평균값들 중에서 평균값의 인덱스가 몇번째 자리인지 구하기 ( 순위 개념 )
예를 들어
score = [[80, 70], [70, 80], [30, 50], [90, 100], [100, 90], [100, 100], [10, 30]]
avg_score = [75.0, 75.0, 40.0, 95.0, 95.0, 100.0, 20.0]
sorted_avg_score = [100.0, 95.0, 95.0, 75.0, 75.0, 40.0, 20.0]
avg_score를 for문을 돌면서
sorted_avg_score에서 index를 찾는다
그리고 순위를 매기는 것이므로 index+1하면 된다
그럼
score => 75점, 75점, 40점, 95점...은
sorted_avg_score => 4,4,6,2,...로 가게 된다
(index()는 해당 리스트에서 처음 등장했을 때 기준이므로 같은 점수가 있다면 순위가 동일해진다!)
728x90