Do it 알고리즘 코딩 테스트 - 2번
문제.
https://www.acmicpc.net/problem/1546
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
코드.
n = int(input())
m = list(map(int, input().split()))
high = max(m)
sum = 0
total = 0
for i in m:
sum = sum + i
total = sum*100/high/n
print(total)
입력 값 | 출력 값 |
3 40 80 60 |
75.0 |
해석 및 풀이.
★ 이 문제는 N개 만큼의 수를 입력받은 후 가장 최댓값을 골라 모든 숫자를 "기존수 / 최댓값 * 100" 으로 바꾸어 줍니다. 그리고 바뀐 수들의 평균을 구하여 출력하는 프로그램을 만드는 문제입니다.
n = int(input())
m = list(map(int, input().split()))
먼저 N개의 값을 받아주는 input() 함수와 N개 만큼의 수를 받아줄 input() 함수를 각각 만들어 줍니다. 이때 어려개의 숫자를 한번에 받아야 하기 때문에 받고 바로 정수화 해서 리스트에 담길수 있도록 설정해주는데 split()함수로 숫자를 나누고 int를 이용해 정수형으로 치환한 뒤 이 모든 함수가 적용되어 반환하게끔 map()함수를 이용해 줍니다.
high = max(m)
sum = 0
total = 0
for i in m:
sum = sum + i
이 문제를 해석하여 해결하기 위한 계산식은 "기존수의 총합 * 100 / 최댓값 / N(수의 갯수)" 입니다. 따라서 필요한 값들을 구해보면 리스트에 들어간 숫자중 최댓값을 구하기 위해 max() 함수를 이용해 high변수에 넣어주고 기존수의 총합을 구하기 위해 반복문을 돌려줍니다. 이때 총합을 넣어줄 변수 sum을 0으로 설정해 줍니다. 그리고 최종 결과값을 넣어주는 변수 total을 0으로 설정해 줍니다.
total = sum*100/high/n
print(total)
마지막으로 total에 위에서 추출한 "기존수의 총합(sum) * 100 / 최댓값(high) / 수의 갯수(n)" 을 계산해 넣어주고 이를 print로 출력해줍니다.