728x90
반응형
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 수의 개수를 입력받는다. N = int(sys.stdin.readline())
- 각 수를 저장할 리스트를 생성하고 li = []
- 각 수가 입력되는 횟수를 저장할 딕셔너리를 생성한다. d = {}
- 수의 개수만큼 반복하며 for i in range(N)
- 각 수를 입력받고 num = int(sys.stdin.readline())
- 만약 해당 수가 이미 딕셔너리에 있으면 if (num in d)
- 딕셔너리에서 해당 수의 횟수를 증가시킨다. d[num] += 1
- 반면에 해당 수가 딕셔너리에 없는 처음 입력된 수라면 else
- 딕셔너리에 해당 수의 횟수를 추가한다. d[num] = 1
- 그리고 모든 수는 리스트에 추가된다. li.append(num)
- 우선 첫 번째로 산술평균값을 출력한다. 산술평균값은 입력된 모든 수를 더하고 개수로 나눈 값이다. 첫째 자리에서 반올림한 결과이므로 정수형으로 출력하면 된다. print(round(sum(li) / N))
- 리스트를 오름차순으로 정렬하여 li.sort()
- 두 번째로 중앙값을 출력한다. 중앙값은 오름차순으로 정렬한 수의 가운데 값이다. print(li[int((N - 1) // 2)])
- 세 번째로 최빈값을 출력해야 하는데, 최빈값을 출력하기 위해 각 수의 횟수를 저장해 둔 딕셔너리를 수를 기준으로 오름차순 정렬하고 d = sorted(d.items(), key = lambda x : x[0])
- 횟수를 기준으로 내림차순 정렬한다. d = sorted(d, key = lambda x : x[1], reverse=True)
- 가장 많이 나온 수의 횟수를 저장한다. max = d[0][1]
- 최빈값이 여러 개이면 최빈값 중 두 번째로 작은 수를 출력하면 되기 때문에 정렬한 딕셔너리에서 그다음 값만 확인하면 된다. 만약 입력된 수가 2개 이상이고, 다음 수의 횟수가 최빈값과 동일하면 if (len(d) >= 2) and (d[1][1] == max)
- 최빈값 중 두 번째로 작은 수인 다음 수를 출력하면 되고 print(d[1][0])
- 다음 수가 최빈값이 아니라면 그냥 제일 앞 최빈값의 수를 출력하면 된다. else: print(d[0][0])
- 마지막으로 수의 범위를 최댓값 - 최솟값으로 구하여 출력하면 된다. print(li[-1] - li[0])
반응형
3. 소스코드
import sys
N = int(sys.stdin.readline())
li = []
d = {}
for i in range(N):
num = int(sys.stdin.readline())
if (num in d):
d[num] += 1
else:
d[num] = 1
li.append(num)
print(round(sum(li) / N))
li.sort()
print(li[int((N - 1) // 2)])
d = sorted(d.items(), key = lambda x : x[0])
d = sorted(d, key = lambda x : x[1], reverse=True)
max = d[0][1]
if (len(d) >= 2) and (d[1][1] == max):
print(d[1][0])
else:
print(d[0][0])
print(li[-1] - li[0])
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 4779번 : 칸토어 집합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.15 |
---|---|
[백준] 24060번 : 알고리즘 수업 - 병합 정렬 1 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.14 |
[백준] 25501번 : 재귀의 귀재 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.13 |
[백준] 20920번 : 영단어 암기는 괴로워 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.12 |
[백준] 26069번 : 붙임성 좋은 총총이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.10 |
[백준] 25192번 : 인사성 밝은 곰곰이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.09 |
[백준] 1037번 : 약수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.08 |
[백준] 24511번 : queuestack - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.12.07 |