백준 2108번 풀이
문제풀러가기
https://www.acmicpc.net/problem/2108
문제
풀이
1. 산술평균: round()함수 활용
round() 반올림 함수
ex1) round(3.6) = 4
ex2) round(3,2) = 3
ex3) round(3.425, 1) = 3.4
ex4) round(4.1729, 3) = 4.173
2. 중앙값: // <- 몫 구하기 활용
5//2 = 2
6//2 = 3
3. 최빈값: collections 모듈의 Counter클래스 활용.
ex)
from typing import Counter
arr=[1,2,3,3,6,2,1,4,4,4,5,5,5]
cnt = Counter(arr)
print("Counter(arr) =",cnt)
#Counter(arr) = Counter({4: 3, 5: 3, 1: 2, 2: 2, 3: 2, 6: 1})
cnt = Counter(arr).most_common()
print("Counter(arr).most_common() =",cnt)
#Counter(arr).most_common() = [(4, 3), (5, 3), (1, 2), (2, 2), (3, 2), (6, 1)]
print("len(cnt) =",len(cnt))
#len(cnt) = 6
4. 최대값 - 최소값 = 범위
arr = [1, 5, 8]
max(arr) = 8
min(arr) = 1
코드-실패(시간초과)
처음엔 Counter클래스 활용을 안하고 list.counter()을 써서,
제일 큰 counter을 또 다른 리스트에 집어 넣고, set으로 리스트 중복 값 제거를 해 준다음
sort() 로 정렬 후 그 중에 두번째로 작은 수를 출력하는 방식으로 했습니다. 그랬더니 시간 초과... ㅠ_ㅠ
import sys
N = int(sys.stdin.readline())
arr = []
arr_min = []
sum = 0;
cnt=0
for i in range (N):
arr.append(int(sys.stdin.readline()))
sum+=arr[i]
arr.sort()
print(round(sum/N)) #합
print(arr[len(arr)//2]) #중앙값
#---------------------------------#
for i in range (N):
a = arr.count(arr[i])
if a>= cnt:
cnt = a
for i in range(N):
a = arr.count(arr[i])
if a == cnt:
arr_min.append(arr[i])
arr_min = list(set(arr_min)) #리스트 중복 제거
arr_min.sort()
if len(arr_min) == 1: #리스트에 숫자가 하나밖에 없다면
print(arr_min[0])
else: #리스트에 숫자가 많아도 무조건 두번째로 작은 수
print(arr_min[1])
print(max(arr)-min(arr)) #범위
코드-성공
import sys
from typing import Counter
N = int(sys.stdin.readline())
arr = []
for i in range (N):
arr.append(int(sys.stdin.readline()))
arr.sort()
print(round(sum(arr)/N)) #합의 반올림
print(arr[len(arr)//2]) #중앙값
cnt = Counter(arr).most_common()
if(len(cnt)) > 1:
if cnt[0][1]==cnt[1][1]:
print(cnt[1][0])
else:
print(cnt[0][0])
else:
print(cnt[0][0])
print(max(arr)-min(arr)) #범위
'코딩테스트 > 코딩테스트 문제' 카테고리의 다른 글
코딩테스트 준비 - 백준11650번 좌표 정렬하기 풀이(간단한 풀이):파이썬 튜플 괄호 없애기 (파이썬) (0) | 2021.06.03 |
---|---|
코딩테스트 준비 - 백준1427번 풀이:파이썬 숫자 정렬(파이썬) (0) | 2021.06.03 |
코딩테스트 준비 - 백준10989번 정렬3 풀이 (파이썬) (0) | 2021.05.31 |
코딩테스트 준비 - 백준1018번 체스판 풀이(파이썬) (0) | 2021.05.28 |
코딩테스트 준비- 백준 2751번:병합정렬,리스트 정렬 예제(파이썬) (0) | 2021.05.27 |
댓글