문제설명
중간시험 점수와 기말시험 점수가 있습니다. 이를 바탕으로 점수가 가장 많이 오른 학생의 점수 차이와 가장 많이 떨어진 학생의 점수 차이를 구하려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다.
```
1. 각 학생에 대하여 기말고사 점수에서 중간고사 점수를 뺀 값의 최댓값을 구합니다.
2. 각 학생에 대하여 기말고사 점수에서 중간고사 점수를 뺀 값의 최솟값을 구합니다.
3. 1번과 2번 과정에서 구한 점수를 리스트에 담아 return 합니다.
```
예를 들어 중간시험 점수가 [20, 50, 40]이고, 기말시험 점수가 [10, 50, 70]이면, 학생의 시험 점수 차이는 [-10, 0, 30]입니다. 따라서 성적이 가장 많이 오른 학생은 30점이 올랐습니다. 그리고 성적이 가장 많이 떨어진 학생은 10점이 떨어졌습니다.
학번순으로 중간시험 점수를 담은 리스트 mid_scores와 학번순으로 기말시험 점수를 담은 리스트 final_scores가 solution 함수의 매개변수로 주어집니다. 이 때 성적이 가장 많이 오른 학생의 점수 차이를 **리스트 첫 번째 원소** 로, 성적이 가장 많이 떨어진 학생의 점수 차이를 **두 번째 원소** 로 담은 리스트를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 <U>**한 줄**</U>만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
학번순으로 중간시험 점수를 담은 리스트 mid_scores와 학번순으로 기말시험 점수를 담은 리스트 final_scores가 solution 함수의 매개변수로 주어집니다.
* 시험 점수는 100 이하인 자연수입니다.
* mid_scores의 길이는 5 이상 50 이하입니다.
* 리스트 mid_scores의 길이와 리스트 final_scores의 길이는 같습니다.
return 값 설명
성적이 가장 많이 오른 학생의 점수 차이를 **리스트 첫 번째 원소** 로 하고, 성적이 가장 많이 떨어진 학생의 점수 차이를 **두 번째 원소** 로 담은 리스트를 return 해주세요.
* 점수가 오른 학생이 없으면 첫 번째 원소에 0을 넣고, 점수가 떨어진 학생이 없으면 두 번째 원소에 0을 넣도록 합니다.
예시
| mid_scores |final_scores |return |
|---|---|---|
| [20, 50, 40] | [10, 50, 70]|[30, -10]|
문제 코드
def func_a(scores1, scores2):
answer = 0
for score1, score2 in zip(scores1, scores2):
answer = max(answer, score2 - score1)
return answer
def func_b(scores1, scores2):
answer = 0
for score1, score2 in zip(scores1, scores2):
answer = min(answer, score1 - score2)
return answer
def solution(mid_scores, final_scores):
up = func_a(mid_scores, final_scores)
down = func_b(mid_scores, final_scores)
answer = [up, down]
return answer
풀이
# 점수가 가장 많이 오른 학생의 점수 차이 구하기
def func_a(scores1, scores2):
answer = 0
for score1, score2 in zip(scores1, scores2):
answer = max(answer, score2 - score1)
return answer
# 점수가 가정 적게 오른 학생의 점수 차이 구하기
def func_b(scores1, scores2):
answer = 0
for score1, score2 in zip(scores1, scores2):
# score1에 기말고사 점수, score2에 중간고사 점수를 넣어줘야 함
answer = min(answer, score1 - score2)
return answer
def solution(mid_scores, final_scores):
up = func_a(mid_scores, final_scores)
# func_b의 구조에 맞게 변수 순서 변경
down = func_b(final_scores, mid_scores)
answer = [up, down]
return answer
댓글