티스토리 뷰

코딩테스트/백준

백준-2108(파이썬)

김쓰로그 2022. 8. 29. 19:42

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

 

2108번: 통계학

첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.

www.acmicpc.net

문제생각

1은 단순히 합을 구해서 평균을 구하면되는 것이고 2는 수의 개수가 홀수개라고 하였으니 정렬 후 n//2번째 인덱스를 선택하면 되는 문제였다.

3번 최빈값에서 조금 고민을 하였다. 나는 입력을 받을 때 dic 형식으로 key는 숫자, value는 숫자의 개수로 정하여 이를 반복문으로 비교하여 최빈값을 구하도록 하였다.

4번은 정렬된 리스트에서 마지막인덱스와 처음 인덱스를 빼주면되는 문제였다.

 

문제코드

import sys
input=sys.stdin.readline

n=int(input())
n_dic={}
n_list=[]
for _ in range(n):
    num=int(input())
    n_list.append(num)
    if(num not in n_dic.keys()):
        n_dic[num]=1
    else:
        n_dic[num]+=1

n_list.sort()
print(round(sum(n_list)/n))
print(n_list[n//2])

Max=-1
Max_value=-5000 // 최소값이 -4000이기에
for v in n_dic.values():
    if(v>=Max):
        Max=v

candi=[]
for k in n_dic.keys():
    if(n_dic[k]==Max):
        candi.append(k)
candi.sort()
if(len(candi)>1):
    print(candi[1])
else:
    print(candi[0])
print(n_list[n-1]-n_list[0])

'코딩테스트 > 백준' 카테고리의 다른 글

백준-1244(파이썬)  (1) 2022.09.30
백준-19637(파이썬)  (0) 2022.09.30
백준-7568(파이썬)  (0) 2022.08.29
백준-1316(파이썬)  (0) 2022.08.23
백준-1978(파이썬)  (0) 2022.08.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함