코딩 테스트/Baekjoon

S3 2108. 통계학

  • -
728x90

  • 정답률 : 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

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

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