1546번 : 평균 문제
세준이는 기말고사를 망쳤다.
세준이는 점수를 조작해서 집에 가져가기로 했다.
일단 세준이는 자기 점수 중에 최댓값을 골랐다.
이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1546
풀이 코드
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
'백준 알고리즘 문제 풀이 [Python]' 카테고리의 다른 글
[백준/Python] 4344번 평균은 넘겠지 (1차원 배열) (0) | 2023.02.22 |
---|---|
[백준/Python] 8958번 OX퀴즈 (1차원 배열) (0) | 2023.02.22 |
[백준/Python] 3052번 나머지 (1차원 배열) (0) | 2023.02.22 |
[백준/Python] 5597번 과제 안 내신 분..? (1차원 배열) (0) | 2023.02.22 |
[백준/Python] 2562번 최댓값 (1차원 배열) (0) | 2023.02.22 |