티스토리 뷰

# collections 모듈의 Counter 메소드를 쓰지 않는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import sys
 
max_size = 4000  # 입력되는 정수의 절댓값은 4000을 넘지 않는다.
 
def artithmetic_mean(num_list): # 산술평균
    sum = 0
    for i in num_list:
        sum += i
    return int(round(sum/len(num_list),0))
 
def median_value(num_list): # 중앙값
    num_list.sort()
    return num_list[len(num_list)//2]
 
def most_frequent_value(num_list): # 최빈값
    count_positive = [0]*(max_size+1)
    count_negative = [0]*(max_size+1)
    most_frequent_list = []
    for i in num_list:
        if i >= 0:
            count_positive[i] += 1
        else:
            count_negative[abs(i)] += 1
    result = 0
    for i in range(max_size+1):
        result = max(result, count_negative[i], count_positive[i])
    for i in range(max_size, 0-1):
        if result == count_negative[i]:
            most_frequent_list.append(-i)
    for i in range(max_size+1):
        if result == count_positive[i]:
            most_frequent_list.append(i)
    if len(most_frequent_list) >= 2:
        return most_frequent_list[1]
    else:
        return most_frequent_list[0]
 
 
def max_min_diff(num_list): # 최대 최소 값 차이
    return max(num_list) - min(num_list)
 
test_case = int(input())
num_list = []
for case in range(test_case):
    num_list.append(int(sys.stdin.readline().strip()))
 
print(artithmetic_mean(num_list))
print(median_value(num_list))
print(most_frequent_value(num_list))
print(max_min_diff(num_list))
cs

 

# collections 모듈의 Counter 메소드를 사용한 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import sys
from collections import Counter
 
def artithmetic_mean(num_list): # 산술평균
    sum = 0
    for i in num_list:
        sum += i
    return int(round(sum/len(num_list),0))
 
def median_value(num_list): # 중앙값
    num_list.sort()
    return num_list[len(num_list)//2]
 
def most_frequent_value(num_list): # 최빈값
    cnt = Counter(num_list)
    cnt = Counter.most_common(cnt)
    if len(cnt) > 1:
        if cnt[0][1== cnt[1][1]:
            return cnt[1][0]
    return cnt[0][0]
 
def max_min_diff(num_list): # 최대 최소 값 차이
    return max(num_list) - min(num_list)
 
test_case = int(input())
num_list = []
for case in range(test_case):
    num_list.append(int(sys.stdin.readline().strip()))
 
print(artithmetic_mean(num_list))
print(median_value(num_list))
print(most_frequent_value(num_list))
print(max_min_diff(num_list))
cs

 

 collections의 Counter 메소드를 사용하면 최빈값을 좀 더 쉽게 구할 수 있다.