티스토리 뷰

반응형

https://www.acmicpc.net/problem/2108

 

2108번: 통계학

첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.

www.acmicpc.net

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 구현
  • 정렬

 


 

⊙ 문제 접근 과정

 

배열에 값들을 전부 저장해주고 제일 먼저 정렬을 했다.

그다음은 첫 번째 조건인 평균을 구하기 위해 sum 함수를 사용하여 간단히 구해주었고,

두 번째 조건은 배열의 개수가 홀수개이기에 N//2를 하여 바로 출력해주었다.

정렬은 이미 실행되어 있으니.

 

세 번째 조건은 Counter를 사용했는데 처음 사용해봤다. collections에 있는 함수인데,

이를 이용하여 가장 많이 나온 수를 구할 수 있었다.

 

마지막으로 네 번째 조건은 max 함수와 min 함수를 이용하여 출력해주었다.

 

 


 

⊙ 문제 풀이

 

from collections import Counter
import sys

input = sys.stdin.readline

N = int(input())
arr = []

for _ in range(N):
    arr.append(int(input()))

arr.sort()

print(round(sum(arr)/N))
print(arr[N//2])

temp = Counter(arr).most_common()
if len(arr) > 1:
    if temp[0][1] == temp[1][1]:
        print(temp[1][0])
    else:
        print(temp[0][0])
else:
    print(temp[0][0])

print(max(arr) - min(arr))

 


⊙ 결과

 


⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함