1. 문제 분석
- 핵심: 주어진 점수 중 최댓값(M)을 찾고, 모든 점수를 점수/M*100으로 변환한 뒤 새로운 평균 구하기.
- 제한 사항: 과목 수 N은 1000 이하, 점수는 100 이하의 정수
2. 접근 방식
- 점수를 1차원 리스트에 저장합니다.
- 최대값을 구합니다.
- 한 과목씩 새 방법으로 점수를 구하고 평균을 구합니다.
3. 내 풀이 (Code)
N=int(input())
scores=list(map(int,input().split()))
M=max(scores)
new_scores=[]
for i in range(len(scores)):
new_scores.append(scores[i]/M*100)
print(sum(new_scores)/N)
4. 코드 리뷰 및 학습 포인트
✅ 더 효율적인 풀이
반복문 대신 파이썬의 map()과 내장 sum() 함수를 사용하면 단 한 줄로도 해결할 수 있습니다.
import sys
N = int(sys.stdin.readline())
scores = list(map(int, sys.stdin.readline().split()))
# 새로운 리스트 생성 없이 한 번에 계산
print(sum(scores) * 100 / max(scores) / N)
✅ 시간 복잡도
- 숫자의 개수가 N일 때, 리스트를 한 번 순회하므로 시간 복잡도는 O(N)입니다.
- N이 최대 1000으로 작기 때문에 어떤 방식이든 효율적으로 통과합니다.
'Algorithm > Python' 카테고리의 다른 글
| [백준/Python] 11659번: 구간 합 구하기 4 (0) | 2026.01.14 |
|---|---|
| [백준/Python] 11720번: 숫자의 합 (0) | 2026.01.14 |