500error
[COS Pro 2급, Python] 3차 2번 : 장학생 수 구하기 본문
반응형
문제
모 학교에서는 학기가 끝날 때마다 장학금을 줍니다. 이때 장학생이 몇 명인지 구하려고 합니다. 장학금을 주는 조건은 다음과 같습니다.
1. 이번 학기 성적이 80점 이상(100점 만점)이면서 석차가 상위 10% 이내인 학생
2. 이번 학기 성적이 80점 이상이면서 1등인 학생
3. 직전 학기 대비 성적이 가장 많이 오른 학생(여러 명인 경우 해당 학생 전부)
단, 동점인 학생들은 등수가 같으며, 중복 수혜는 불가합니다.
장학생이 몇 명인지 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. 이번 학기 성적을 기준으로 학생별 석차를 구합니다.
2. 각 학생의 (이번 학기 성적 - 직전 학기 성적) 중 최댓값을 구합니다.
3. 아래 조건을 만족하는 학생을 발견하면, 장학생 수를 1 증가시킵니다.
3-1. 이번 학기 성적이 80점 이상이고, 석차가 상위 10% 이내인 경우
3-2. 또는 이번 학기 성적이 80점 이상이고, 석차가 1등인 경우
3-3. 또는 (이번 학기 성적 - 직전 학기 성적)이 2단계에서 구한 값과 같고, 그 값이 양수인 경우
4. 장학생 수를 return 합니다.
학생들의 이번 학기 성적을 담고 있는 배열 current_grade와 current_grade의 길이 current_grade_len, 직전 학기 성적을 담고 있는 배열 last_grade와 last_grade의 길이 last_grade_len이 매개변수로 주어질 때, 장학생 수를 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
code
def func_a(current_grade, last_grade, rank, max_diff_grade):
arr_length = len(current_grade)
count = 0
for i in range(arr_length):
if current_grade[i] >= 80 and rank[i] <= arr_length // 10:
count += 1
elif current_grade[i] >= 80 and rank[i] == 1:
count += 1
elif max_diff_grade > 0 and max_diff_grade == current_grade[i] - last_grade[i]:
count += 1
return count
def func_b(current_grade):
arr_length = len(current_grade)
rank = [1] * arr_length
for i in range(arr_length):
for j in range(arr_length):
if current_grade[i] < current_grade[j]:
rank[i] += 1
return rank
def func_c(current_grade, last_grade):
max_diff_grade = 1
for i in range(len(current_grade)):
max_diff_grade = max(max_diff_grade, current_grade[i] - last_grade[i])
return max_diff_grade
def solution(current_grade, last_grade):
rank = func_b(current_grade)
max_diff_grade = func_c(current_grade, last_grade)
answer = func_a(current_grade, last_grade, rank, max_diff_grade)
return answer
current_grade = [70, 100, 70, 80, 50, 95]
last_grade = [35, 65, 80, 50, 20, 60]
ret = solution(current_grade, last_grade)
print("solution 함수의 반환 값은", ret, "입니다.")
반응형
'알고리즘 > 파이썬' 카테고리의 다른 글
[COS Pro 2급, Python] 3차 4번 : 단어의 오타 수정하기 (1) | 2024.01.03 |
---|---|
[COS Pro 2급, Python] 3차 3번 : 체조 선수의 점수 구해주기 (0) | 2024.01.03 |
[COS Pro 2급, Python] 3차 1번 : 학생의 등수 구하기 (1) | 2024.01.03 |
[COS Pro 2급, Python] 2차 10번 : 상품권 총 지급액구하기 (1) | 2024.01.03 |
[COS Pro 2급, Python] 2차 9번 : 투표에 대한 후보 찾기 (1) | 2024.01.03 |
Comments