코딩 테스트/Baekjoon

S3 2108. 통계학

  • -
728x90
반응형

문제 보기 :  2108번: 통계학


문제

  • 정답률 : 26%


작성 코드

import sys
input = sys.stdin.readline

T = int(input())
nums1 = [] ; nums2 = {}
ns = 0
for i in range(T):
    n = int(input())
    ns += n
    nums1.append(n)
    if n not in nums2:
        nums2[n]=1
    else:
        nums2[n]+=1

print(round(ns/T))
nums1.sort()
if T%2==1:
    i = (T-1)//2
    print(nums1[i])
else:
    i = T//2
    print((nums1[i]+nums1[i-1])/2)

num = sorted(nums2.items(), key = lambda x:(-x[1],x[0]))
nums2 = dict(num)

v = max(list(nums2.values()))
ls = list(key for key,val in nums2.items() if val==v)
if len(ls) ==1 :
    print(ls[0])
else:
    ls.sort()
    print(ls[1])

print(nums1[-1]-nums1[0])

풀이

딕셔너리를 자유자재로 사용할 줄 알면 쉽게 풀리는 문제다.

리스트에 있는 원소를 count로 개수를 세면 시간복잡도가 높아진다.
그래서 갯수 세기에선 딕셔너리를 많이 사용해왔는데 시간 단축에 좋았다.

320x100
728x90

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

S2 4948. 베르트랑 공준  (0) 2024.11.14
S1 14888. 연산자 끼워넣기  (0) 2024.11.12
S3 14501. 퇴사  (0) 2024.11.10
G4 14502. 연구소  (0) 2024.11.09
S2 1927. 최소 힙  (0) 2024.11.08
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.