본문 바로가기
Python/알고리즘

[COS PRO 2급 #5-9] 시험 등수 구하기

by 포푸리 (POPOOLY) 2023. 2. 7.
반응형

문제설명

시험 점수에 따라 학생의 순위를 매기려 합니다. 동점자 순위는 가능한 순위 중 가장 높은 순위로 매깁니다.
예를 들어 학생별 점수가 [90, 87, 87, 23, 35, 28, 12, 46]이면, 학생별 순위는 [1, 2, 2, 7, 5, 6, 8, 4]입니다.

모든 학생의 점수를 담은 리스트 score가 매개변수로 주어질 때, 순위를 담은 리스트를 return 하도록 solution 함수를 작성해주세요.

매개변수 설명

모든 학생의 점수를 담은 리스트 score가 solution 함수의 매개변수로 주어집니다.
* 학생 수는 1명 이상 1,000명 이하입니다.
* 점수는 1 이상 100 이하인 정수입니다.

return 값 설명

* 순위를 담은 리스트를 return 합니다.

예시

| score |return |
|---|---|
| [90, 87, 87, 23, 35, 28, 12, 46] | [1, 2, 2, 7, 5, 6, 8, 4] |
| [10, 20, 20, 30] | [4, 2, 2, 1] |

예시설명

예시 #1
문제에 나온 예와 같습니다.

예시 #2
이들의 순위는 [4, 2, 2, 1]입니다.

문제 코드

def solution(score):
	# 여기에 코드를 작성해주세요.
    answer = []
    return answer

풀이 1

def solution(score):
	answer = [1 for _ in range(len(score))]
    
    # score끼리 비교해 작으면 등수 추가
	for i in range(len(score)):
		for j in range(len(score)):
			if score[i] < score[j]:
				answer[i] += 1
			
	return answer

풀이 2

def solution(score):
    answer = [0] * len(score)
    for i in range(len(score)):
        # score[i]보다 점수가 더 큰 학생수에 1을 더하면 등수
        answer[i] = sum(map(lambda x:x > score[i], score))+1
    return answer

댓글