백준 알고리즘 문제 풀이 [Python]

[백준/Python] 1546번 평균 (1차원 배열)

wlalsu_u 2023. 2. 22. 21:56

1546번 : 평균 문제

 

 

세준이는 기말고사를 망쳤다.

세준이는 점수를 조작해서 집에 가져가기로 했다.

일단 세준이는 자기 점수 중에 최댓값을 골랐다.

이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*으로 고쳤다.

 

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

 

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

 

 

 

https://www.acmicpc.net/problem/1546

 

1546번: 평균

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

www.acmicpc.net

 

 


 

풀이 코드

 

n = int(input())
array = list(map(int, input().split()))
m = max(array)

for i in range(n):
    array[i] = array[i]/m*100

print(sum(array)/n)

 

 

 

n = int(input())

 

 

- 첫째 줄에서 시험 본 과목의 개수 n 을 입력받음

 

- input() 을 통해 한 줄의 문자열을 입력받을 수 있음

 

- 입력받은 문자열을 정수로 처리하기 위해 int() 함수를 사용

 

 

 

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

 

 

- 두번째 줄에서 공백으로 구분된 세준이의 성적을 입력받아, array 리스에 저장

 

- input().split() 으로 문자열을 공백으로 나눈 리스트로 바꿈

 

- map 을 이용하여 리스트의 모든 원소에 int() 함수를 적용

 

- 그 결과를 다시 list() 로 전환하여, 입력받은 문자열을 각각 숫자 자료형으로 저장

 

 

 

m = max(array)

 

 

- array 리스트에서 가장 큰 값을 m 에 저장

 

- max() 함수는 파라미터가 2개 이상 들어왔을 때, 가장 큰 값을 반환

 

 

 

for i in range(n):

 

 

- 첫번째 줄에서 입력받은 n 만큼 반복

 

- range() 의 값으로 하나의 값을 넣으면, 자동으로 시작 값은 0

 

- 즉, 0부터 n-1 까지의 모든 인덱스를 방문하기 위해 사용

 

 

 

array[i] = array[i]/m*100

 

 

- 모든 점수를 점수/M*100 으로 고치기 위한 수식

 

- for 문 안에서 n번 반복하여, array 리스트에 저장된 n개의 점수를 모두 변환

 

 

 

 

print(sum(array)/n)

 

 

- 첫째 줄에 새로운 평균을 출력하기 위한 코드

 

- sum() 함수는 리스트와 같은 iterable 객체가 입력으로 주어졌을 때, 모든 원소의 합을 반환

 

- result = sum([1, 2, 3, 4, 5]) 로도 사용 가능

 

 

 

 

 

 

 

나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.

https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC