안녕하세요 오늘은 백준 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번씨언어
프로그래밍_파이썬_백준_2750번_정렬_오름차순 (0) | 2021.11.27 |
---|---|
프로그래밍_파이썬_백준_10870번_피보나치수열 (1) | 2021.11.26 |
프로그래밍_파이썬_백준_10872번_팩토리얼_재귀함수 (0) | 2021.11.26 |
프로그래밍_파이썬_백준1712번_손익분기점 (0) | 2021.11.26 |