백준 - 1546번 평균 python 문제풀이 [Hellfer]
https://www.acmicpc.net/problem/1546
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
🔷 알고리즘 분류 - 수학, 사칙연산 난이도 - 브론즈 1
1. input(): 사용자로부터 입력을 받는 함수입니다. 기본적으로 문자열 형태로 입력을 받습니다.
2. int(): 정수형으로 형변환을 해주는 함수입니다.
본 문제에서는 input()으로 받은 문자열을 정수형으로 변환하는 데 사용합니다.
3. list(): 리스트로 형변환을 해주는 함수입니다.
4. map(): 첫 번째 인자로 받은 함수를 두 번째 인자로 받은 iterable의 모든 항목에 적용하여 결과를 반환하는 함수입니다.
5. split(): 문자열을 공백을 기준으로 분리하여 리스트로 만드는 메서드입니다.
6. max(): iterable에서 최댓값을 찾아 반환하는 함수입니다.
7. for문: 반복문의 일종으로, 명령을 반복적으로 수행합니다.
8. append(): 리스트에 항목을 추가하는 메서드입니다.
9. sum(): iterable의 모든 항목의 합을 계산하는 함수입니다.
10. print(): 값을 화면에 출력하는 함수입니다.
🔶문제 풀이 - 리스트를 이용한 풀이
# 사용자로부터 정수 n을 입력받음
n=int(input())
# 사용자로부터 n개의 정수를 입력받아 리스트 x를 생성
x=list(map(int,input().split()))
# 빈 리스트 result 생성
result=[]
# 리스트 x의 각 요소를 최대값으로 나눈 후 100을 곱한 값을 result에 추가
# 즉, 각 요소가 최대값 대비 몇 퍼센트인지를 계산하여 result에 저장
for i in range(len(x)):
result.append(x[i]/max(x)*100)
# 리스트 result의 평균값을 계산
average=sum(result)/n
# 평균값을 출력
print(average)
🔶 문제 이해하기
이 문제는 배열의 각 요소를 최댓값으로 나눈 후 100을 곱한 값을 계산하는 것을 요구하며, 그 결괏값들의 평균을 구하라는 내용입니다.
즉, 모든 점수를 최대 점수에 대한 비율로 변환한 후, 그 비율들의 평균을 출력하라는 것이 목표입니다.
예를 들어, 입력이 [40, 80, 60]이면, 최대 점수는 80이므로 이를 기준으로 각 점수를 변환하면 [50, 100, 75]가 됩니다.
이때의 평균은 (50+100+75)/3 = 75입니다.
🤗파이팅입니다~ 여러분!!🤗