상세 컨텐츠

본문 제목

백준2108번 통계학 파이썬 풀이

알고리즘/백준 온라인

by 혁오 2022. 1. 4. 16:48

본문

BIG

안녕하세요 오늘은 백준 2108번 을 풀어보았습니다!

우선 문제 먼저 보시죠!

문제는 정말 간단해 보입니다, 하지만 다른 것들은 다 문제 없이 푸셨을 거라 생각 되는데

가장 어려웠던 것은 최빈값 이었던거 같습니다.

최빈값의 조건을 보면 최빈값이 여러개 있을 때에는 최빈값 중 두번째로 작은 값을 출력한다고 하였습니다.

소스코드와 함께 주석을 보시죠!

from collections import Counter # Counter는 딕셔러리 형태로
                                # 리스트 각 요소 개수를 보여줌
import sys
input=sys.stdin.readline # input의 시간 단축 가능
N=int(input())
array=[]
sansul=0
chabin=0
for i in range(N):
    array.append(int(input()))


array.sort()

sansul = sum(array)/N

# Counter 함수를 쓰면 딕셔너리 형태로 저장
# most_common()으로하면 리스트 형태의 튜플값으로 저장
chabin = Counter(array).most_common()




print("{:.0f}".format(sansul)) ## "{:.숫자f}.format(변수) 는 변수를 소수점
                                #숫자까지 반올림후 출력(코딩 반올림은 6부터 올려짐)
print(array[N//2])


if N>1:
    if chabin[0][1]==chabin[1][1]:
        print(chabin[1][0])
    else:
        print(chabin[0][0])
else:
    print(chabin[0][0])
    
print(max(array)-min(array)) # max(변수)는  변수의 최댓값을 출력

 

 

from collections import Counter # Counter는 딕셔러리 형태로
                                # 리스트 각 요소 개수를 보여줌

우선 이 부분이 중요한데 최빈값을 알려면 collections의 내장 함수에서 Counter를 사용 해야합니다!

 

딕셔너리 형태로는 인덱스를 뽑아 내기엔 불편하니,

 

most_common() 함수를 이용해줍니다

 

most_common() 함수는 Counter 객체에서 요소를 뽑아 리스트 형태로 반환 해줍니다

 

chabin의 값은 리스트 형태로 반환 되었고 안의 요소들은 튜플 형태입니다

[(1,5), (5,2), (9,2), (4,1)]

 

 

 

if N>1:
    if chabin[0][1]==chabin[1][1]: # 만약 최빈값이 2개 이상이면 그 중 작은 값인 chabin[1][0]을 출력
        print(chabin[1][0]) # 이미 정렬 되어 있기 때문에 chabin[1][0]을 출력해줍니다
    else:
        print(chabin[0][0])
else:
    print(chabin[0][0])

 

 

 

#백준

#백준온라인

#파이썬

#백준2108번

#백준2108번파이썬

#백준2108번자바

#백준2108번씨언어

 

BIG

관련글 더보기