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

[COS PRO 2급 #3-1] 학생의 등수 구하기

by 포푸리 (POPOOLY) 2023. 1. 16.
반응형

문제설명

학생들의 시험 점수가 주어졌을 때, n번 학생이 몇 등인지 구하려 합니다. 학번은 0번부터 시작하며, 시험 점수는 학번순으로 주어집니다.

 

예를 들어 학생 네 명의 시험 점수가 다음과 같은 경우

 

3번 학생은 3등을 했습니다.

이를 위해 다음과 같이 프로그램 구조를 작성했습니다.

~~~
1. n번 학생의 점수를 변수에 저장합니다.
2. 점수를 내림차순으로 정렬합니다.
3. 리스트의 첫 번째 원소부터 마지막 원소까지 순회하며 n번 학생의 점수를 찾습니다.
  3-1. 1번 단계에서 저장해둔 점수와 같은 점수를 찾으면 등수를 return 합니다.
~~~

학생들의 시험 점수가 번호순으로 들은 리스트 scores와 학번 n이 solution 함수의 매개변수로 주어질 때, n번 학생의 등수를 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작하도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.

매개변수 설명

학생들의 시험 점수가 번호순으로 들은 리스트 scores와 학번 n이 solution 함수의 매개변수로 주어집니다.
* scores의 길이는 1 이상 100 이하입니다.
* 점수는 0점 이상 100점 이하이며 동점자는 없습니다.
* n은 0 이상 (scores의 길이 - 1) 이하의 정수입니다.

return 값 설명

n번 학생의 등수를 return 해주세요.

예시

| scores           | n | result |
|------------------|---|--------|
| [20, 60, 98, 59] | 3 | 3      |

예시 설명

* 3번 학생의 점수는 59점입니다.
* 점수를 내림차순으로 정렬하면 [98, 60, 59, 20]입니다.
* 정렬된 점수에서 59는 3번째에 있습니다.

따라서 3번 학생은 3등입니다.

문제 코드

def func_a(scores, score):
    rank = 1
    for s in scores:
        if s == score:
            return rank
        rank += 1
    return 0

def func_b(arr):
    arr.sort(reverse=True)

def func_c(arr, n):
    return arr[n]

def solution(scores, n):
    score = func_@@@(@@@)
    func_@@@(@@@)
    answer = func_@@@(@@@)
    return answer

풀이

# scores에서 score의 순서 구하기
def func_a(scores, score):
    rank = 1
    for s in scores:
        if s == score:
            return rank
        rank += 1
    return 0

# 내림차순 정렬
def func_b(arr):
    arr.sort(reverse=True)

# arr의 n번째 원소 구하기
def func_c(arr, n):
    return arr[n]

def solution(scores, n):
    score = func_c(scores, n)
    func_b(scores)
    answer = func_a(scores, score)
    return answer

댓글