꾸준히 합시다

백준 파이썬 1546번: 평균 본문

코딩 테스트 문제 풀이

백준 파이썬 1546번: 평균

tturbo0824 2021. 3. 8. 09:31

www.acmicpc.net/problem/1546

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

문제 유형: 수학, 사칙연산

 

# Solution 1

n = int(input())
a = list(map(int, input().split(' ')))
a.sort(reverse=True)
new_score = []

for score in a:
    score = score / a[0] * 100
    new_score.append(score)
new = sum(new_score)

print(new/n)

우선 생각나는 대로 짜 본 코드.

 

# Solution 2

import sys

n = int(sys.stdin.readline())
score_list = list(map(int, sys.stdin.readline().strip().split()))
max_score = max(score_list)

new_list = []

for score in score_list :
    new_list.append(score / max_score * 100)
avg = sum(new_list) / n

print(avg)

가독성을 높이기 위해 다시 정리해보았다. 시간, 메모리 면에서 이전의 답안과 그리 큰 차이는 없었다.

 

세 수 중 가장 큰 수를 구하기 위해선 max함수를 사용하면 될 일이었다. 리스트를 뒤집은 다음 가장 첫 번째 항목을 가져올 필요 없이.

Comments