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
반응형