문제
https://www.acmicpc.net/problem/2108
문제는 위 사이트를 참고해주세요.
풀이
import sys
N = int(input())
lst = []
dic = {}
for i in range(N):
x = int(sys.stdin.readline())
lst.append(x)
if x in dic:
dic[x] += 1
else:
dic[x] = 1
lst.sort()
temp = []
for i in dic: # 최빈값을 찾아 리스트에 넣음
if dic[i] == max(dic.values()):
temp.append(i)
temp.sort()
mid = len(lst) // 2
print(round(sum(lst) / N)) # 산술 평균
print(lst[mid]) # 중앙 값
if len(temp) > 1: ## 최빈값
print(temp[1])
else:
print(temp[0])
print(max(lst)-min(lst)) # 범위
먼저 숫자의 개수를 입력받습니다.
그리고 리스트와 딕셔너리를 만들어줍니다.
첫 for문을 돌릴 때마다 숫자를 입력받고 리스트와 딕셔너리에 넣어줍니다.
이 때, 중복되는 수를 생각해 이미 딕셔너리에 있다면 +1을 해줍니다.
for문이 끝나고 리스트를 정렬해줍니다.
그리고 최빈값을 넣을 리스트 temp를 만들고
두 번째 for문은 최빈값을 찾아 temp에 넣어줍니다.
끝나면 temp를 정렬해줍니다.
다른 부분은 크게 어려운게 없고
if문은 최빈값이 2개 이상이면 두 번째로 작은 값을 출력하기 때문에 temp[1]을 출력,
최빈 값이 하나면 temp[0]을 출력하게 만들기 위해섭니다.
결과
'IT > 알고리즘' 카테고리의 다른 글
1일 N알고리즘 - #42 (0) | 2020.07.01 |
---|---|
1일 N알고리즘 - #41 (0) | 2020.06.11 |
1일 N알고리즘 - #39 (0) | 2020.06.09 |
1일 N알고리즘 - #38 (0) | 2020.06.08 |
1일 N알고리즘 - #37 (0) | 2020.06.06 |
댓글