시간초과로 여러번 통과하지 못했던 문제이다.
로직이 맞는 것 같은데 시간초과 뜬다면 input() 을 의심해보아야 한다.
몇 번의 input을 더 받아야하는지 알고 있다면 (대부분의 문제의 첫 값은 for문 돌아야 할 횟수를 알려준다)
다음을 활용하도록 하자.
input() -> sys.stdin.readline()
풀이)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
def main(n, input_num):
# 산술평균 : N개의 수들의 합을 N으로 나눈 값
print(int(round(sum(input_num) / n)))
# 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
sorted_num = sorted(input_num)
print(sorted_num[int(n / 2)])
# 최빈값 : N개의 수들 중 가장 많이 나타나는 값
print(most_frequent(sorted_num))
# 범위 : N개의 수들 중 최댓값과 최솟값의 차이
print(sorted_num[-1] - sorted_num[0])
def most_frequent(arr):
temp = dict()
for item in arr:
if temp.get(item):
temp[item] += 1
else:
temp[item] = 1
maxNum = 0
ans = []
for k, v in temp.items():
if v > maxNum:
ans = []
ans.append(k)
maxNum = v
elif v == maxNum:
ans.append(k)
maxNum = v
if len(ans) == 1:
return ans[0]
else:
return sorted(ans)[1]
if __name__ == "__main__":
n = int(input())
input_num = []
for i in range(n):
input_num.append(int(sys.stdin.readline()))
main(n, input_num)
'algorithm > python' 카테고리의 다른 글
[python] 최대 int 범위 (0) | 2022.03.27 |
---|---|
codility/lesson5/prefix sums/passingCars (0) | 2022.02.14 |
hackerrank/Data Structures/Arrays/Sparse Arrays (0) | 2021.07.25 |
hackerrank/Data Structures/Arrays/Dynamic Array (0) | 2021.07.18 |
카카오블라인드/2020/가사검색 (0) | 2020.07.27 |