Algorithm Problems
[Cos Pro 2급] 5차 9번 - 학생별 석차 출력
WakaraNai
2021. 2. 6. 20:06
728x90
반응형
문제
시험 점수에 따라 학생의 순위를 매기려 합니다. 동점자 순위는 가능한 순위 중 가장 높은 순위로 매깁니다.
예를 들어 학생별 점수가 [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] |
Python
#5-2-9
def findIndex(list, x):
for y in range(len(list)):
if list[y]==x:
return y
return -1
def solution(scores):
#처음 상태 저장
init_scores = []
for x in scores:
init_scores.append(x)
#정렬된 상태 만들기
sort =[]
for idx in range(len(scores)):
k=0
for i in range(len(scores)):
if k < scores[i]:
k = scores[i]
sort.append(k)
scores.remove(k)
#정렬된 상태에서 하나씩 꺼내어
#처음 상태에 몇번째에 있던 아이인지
#하나씩 찾아서 그 위치 저장하기
result = []
for i in range(len(init_scores)):
z = findIndex(init_scores, sort[i]) + 1
#z=init_scores.index(sort[i])+1
result.append(z)
return result
print(solution( [90,87,87,23,35,28,12,46] ))
#[1, 2, 2, 8, 5, 6, 4, 7]
728x90
반응형