본문 바로가기
Algorithm/baekjoon

[백준] 1546번 평균 파이썬 (python)

by eoieiie 2024. 3. 11.

문제 

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그러고 나서 모든 점수를 점수/M*100으로 고쳤다.

예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.

세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

 

정답코드

def newscore(lista, b):
    n = max(lista)
    cnt = 0
    
    for i in lista:
        i /= n * 100
        cnt += i
        
    avg = cnt / b
    return avg

N = int(input())
scorelist = list(map(int, input().split())) 

print(newscore(scorelist, N))

 

풀이 

함수구현은 다음과 같다:

 

  1. 리스트와 리스트의 길이를 입력받는다. 
  2. 리스트의 최댓값을 구하고, 
  3. 각 요소(성적)의 최댓값을 통한 최종 값을 구하여 새로 만든 avg에 넣고
  4. 리스트의 길이를 통해 평균값을 반환한다

그리고 그냥 출력하면 되더라. 

 

 

느낀 점

브론즈 1인데 생각보다 쉬웠다. 

이제서야 횟수의 제한 없이 띄어쓰기로 구분된 요소들로 이루어진 리스트의 초기화 방법에 대해서 깨우치게 되었다.

scorelist = list(map(int, input().split()))

 

댓글