문제
어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30, 20, 60, 30, 40, 50의 평균은
이 된다.
평균 이외의 또 다른 대표값으로 최빈값이라는 것이 있다. 최빈값은 주어진 수들 가운데 가장 많이 나타나는 수이다. 예를 들어 10, 40, 30, 60, 30, 20, 60, 30, 40, 50 이 주어질 경우, 30 이 세 번, 40 과 60 이 각각 두 번, 10, 20, 50 이 각각 한 번씩 나오므로, 최빈값은 30 이 된다. 열 개의 자연수가 주어질 때 이들의 평균과 최빈값을 구하는 프로그램을 작성하시오.
입력
첫째 줄부터 열 번째 줄까지 한 줄에 하나씩 자연수가 주어진다. 주어지는 자연수는 1,000 이하의 10 의 배수이다.
출력
첫째 줄에는 평균을 출력하고, 둘째 줄에는 최빈값을 출력한다. 최빈값이 둘 이상일 경우 그 중 최소값을 출력한다. 평균과 최빈값은 모두 자연수이다.
문제 풀이
열 개의 10의 배수가 주어질 때
평균과 최빈값을 구하는 문제이다.
평균은 주어진 수의 합을 구하고 수의 개수로 나누면
쉽게 구할 수 있다.
최빈값은 파이썬에서 제공하는 Counter 라이브러리를 사용했다.
Counter 라이브러리는 주어진 원소들이 나타난 개수를 구해 저장해준다.
그 중 most_common() 함수는 원소들이 나타난 개수가 가장 많은 것부터
정렬하여 리스트로 반환한다.
이때, 문제에서 최빈값이 둘 이상일 경우 그 중 최소값을 출력하라는 조건이 있다.
most_common() 함수는 최빈값이 둘 이상일 경우 먼저 입력된 순서대로
원소를 정렬하기 때문에 원소를 따로 오름차순으로 정렬해주어야 한다.
따라서 최빈값을 구하기 전 원소를 먼저 오름차순으로 정렬해준 뒤 Counter 라이브러리를 사용했다.
My Code
from collections import Counter
# 10개의 10의 배수
array = []
for _ in range(10):
array.append(int(input()))
# 평균
avg = sum(array) // 10
# 최빈값 중 가장 작은 원소 구하기 위해 오름차순 정렬
array.sort()
# array를 등장 횟수가 가장 많은 순서로 정렬해 리스트로 저장
new = Counter(array).most_common()
print(avg)
print(new[0][0])
'알고리즘' 카테고리의 다른 글
[알고리즘 문제] tetris (Python / 파이썬) (0) | 2022.05.25 |
---|---|
[알고리즘 문제] Bingo (Python / 파이썬) (0) | 2022.05.25 |
[알고리즘 문제] class president (Python / 파이썬) (0) | 2022.05.25 |
[알고리즘 문제] eightnine (Python / 파이썬) (0) | 2022.05.24 |
[알고리즘 문제] 숫자 피라미드 (Python / 파이썬) (0) | 2022.05.24 |
댓글