시간초과로 여러번 통과하지 못했던 문제이다.
로직이 맞는 것 같은데 시간초과 뜬다면 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 범위 (1) | 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 |