Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- c3 축 가리기
- 정규식 활용
- g++ 업데이트
- 백준
- python subprocess
- c3 축 없애기
- python popen
- selinux port 등록
- gcc regex
- InfluxDB
- 정규식 문자열 출력
- python os
- regex_search
- CentOS7
- snmp test
- telegraf
- semanage
- 정규식 컴파일
- subporcess path
- c3 초
- influxdb 설치
- c3 second
- gcc 업데이트
- centos pyhon 설치
- c++ 정규식
- grafana dashboard
- c3 step graph
- 1697
- linux시간으로 변경
- snmp
Archives
- Today
- Total
리셋 되지 말자
[백준 2108] 통계학 - 구현, 정렬 본문
코드1 - Counter만 사용
import sys
from collections import Counter
def solution(arr):
# round : 소수점에서 반올림한 평균 출력
print(round(sum(arr)/len(arr)))
# 홀수개인 원소 중, 가장 가운데 있는 원소 출력
print(arr[len(arr)//2])
# Counter : 원소값이 각각 몇개 있는지 분류
cd = Counter(arr)
# 최빈값의 횟수를 저장
max_num = max(cd.values())
cnt_arr = []
# 최빈값에 해당하는 key를 cnt_arr에 저장
for key in cd.keys():
if cd[key] == max_num:
cnt_arr.append(key)
# 최빈값에 해당하는 수가 여러개면, 두 번째수[1]를 출력
# 최빈값에 해당하는 수가 한 개라면 첫 번째수[0]를 출력
if len(cnt_arr) >= 2:
cnt_arr.sort()
print(cnt_arr[1])
else:
print(cnt_arr[0])
# 정렬되어 있는 arr의 마지막 수와 첫 번째 수의 차이를 출력
print(abs(arr[-1] - arr[0]))
n = int(input())
arr = []
for _ in range(n):
arr.append(int(sys.stdin.readline()))
arr.sort()
solution(arr)
코드2 - Counter의 most_common 사용
import sys
from collections import Counter
def solution(arr):
# round : 소수점에서 반올림한 평균 출력
print(round(sum(arr)/len(arr)))
# 홀수개인 원소 중, 가장 가운데 있는 원소 출력
print(arr[len(arr)//2])
# Counter.most_common : 최빈값인 key, value 쌍을 두 개 저장
cd = Counter(arr).most_common(2)
# 최빈값 value를 갖는 쌍이 두 개면, 두 번째로 작은 key를 출력
# 최빈값 value를 갖는 쌍이 한 개면, key를 출력
if len(cd) >= 2 and cd[0][1]==cd[1][1]:
print(max(cd[0][0], cd[1][0]))
else:
print(cd[0][0])
# 정렬되어 있는 arr의 마지막 수와 첫 번째 수의 차이를 출력
print(abs(arr[-1] - arr[0]))
n = int(input())
arr = []
for _ in range(n):
arr.append(int(sys.stdin.readline()))
arr.sort()
solution(arr)
설명
- Counter의 most_common은 대상이 되는 배열의 최빈값이 한개 더라도 오류가 발생하지 않는다.
- 예를들어, [1, 1, 1, 1,] 이면 Counter의 결과로 {1:4} 가 반환되는데, 여기서 most_common(2)를 하면 [(1,4)]가 반환된다.
'알고리즘' 카테고리의 다른 글
[백준 2805] 나무 자르기 - 이분 탐색 (0) | 2022.01.13 |
---|---|
[백준 7568] 덩치 - 브루트포스 (0) | 2022.01.10 |
[백준 10989] 수 정렬하기 3 (0) | 2021.12.31 |
[백준 10814] 나이순 정렬 - 정렬 (0) | 2021.12.30 |
[백준 2609] 최대공약수와 최소공배수 (0) | 2021.12.30 |
Comments