학생들의 점수가 담긴 딕셔너리가 있다고 가정해 보겠습니다. 이때 키(key)는 학생의 이름이고, 값(value)은 여러 개의 숫자로 이루어진 점수 리스트입니다. 우리는 각 학생의 평균 점수를 계산해야 합니다.
예를 들어 입력이 scores = {'Amal': [25,36,47,45], 'Bimal': [85,74,69,47], 'Tarun': [65,35,87,14], 'Akash': [74,12,36,75]}와 같다면, 결과는 [38.25, 68.75, 50.25, 49.25]가 됩니다. 즉, 38.25는 Amal의 평균 점수이고, 68.75는 Bimal의 평균 점수인 식입니다.
해결 알고리즘
이 문제는 다음 단계에 따라 해결할 수 있습니다.
- avg_scores: 새로운 빈 딕셔너리를 생성합니다.
- scores 딕셔너리의 각 이름(name)에 대해 반복합니다.
- avg_scores[name] := scores[name] 리스트에 담긴 점수들의 평균값을 저장합니다.
- 마지막으로 avg_scores의 모든 값(value)을 리스트 형태로 반환합니다.
구현 예제
아래 파이썬 구현을 통해 더 자세히 이해해 보겠습니다.
def solve(scores):
avg_scores = dict()
for name in scores:
avg_scores[name] = sum(scores[name]) / len(scores[name])
return list(avg_scores.values())
scores = {'Amal': [25,36,47,45], 'Bimal': [85,74,69,47], 'Tarun': [65,35,87,14], 'Akash': [74,12,36,75]}
print(solve(scores))
입력
{'Amal': [25,36,47,45], 'Bimal': [85,74,69,47], 'Tarun': [65,35,87,14], 'Akash': [74,12,36,75]}
출력
[38.25, 68.75, 50.25, 49.25]
코드 설명
위 코드에서 핵심 역할을 하는 것은 파이썬 내장 함수 두 가지입니다. sum() 함수는 리스트에 있는 모든 점수의 합계를 구하고, len() 함수는 해당 학생의 점수(과목) 개수를 반환합니다. 합계를 개수로 나누면 그 학생의 평균 점수가 계산됩니다. 반복문이 종료된 후에는 dict.values() 메서드를 활용해 모든 학생의 평균 점수를 한 번에 리스트로 반환할 수 있습니다.