본문 바로가기

Python(알고리즘,문제풀이)/프로그래머스(입문100제)

코딩테스트입문 / 등수 매기기

728x90

📚문제

출처 : 프로그래머스 / 등수 매기기(https://school.programmers.co.kr/learn/courses/30/lessons/120882)

 

📝풀이

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