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
'Python(알고리즘,문제풀이) > 프로그래머스(입문100제)' 카테고리의 다른 글
코딩테스트입문 / 로그인 성공? (0) | 2023.08.07 |
---|---|
코딩테스트입문 / 옹알이(1) (permutations함수) (0) | 2023.08.07 |
코딩테스트입문 / 특이한 정렬 (0) | 2023.08.07 |
코딩테스트입문 / 유한소수 판별하기(소인수,최대공약수,return) (0) | 2023.08.05 |
코딩테스트입문 / 겹치는 선분의 길이 (0) | 2023.08.05 |