Notice
Recent Posts
Recent Comments
Link
just inside
[SWEA/D2] 1204. 최빈수 구하기 본문
728x90
[문제 링크]
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13zo1KAAACFAYh&
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
[문제 설명]
어느 고등학교에서 실시한 1000명의 수학 성적을 토대로 통계 자료를 만들려고 한다.
이때, 이 학교에서는 최빈수를 이용하여 학생들의 평균 수준을 짐작하는데, 여기서 최빈수는 특정 자료에서 가장 여러 번 나타나는 값을 의미한다.
다음과 같은 수 분포가 있으면,
10, 8, 7, 2, 2, 4, 8, 8, 8, 9, 5, 5, 3
최빈수는 8이 된다.
최빈수를 출력하는 프로그램을 작성하여라 (단, 최빈수가 여러 개 일 때에는 가장 큰 점수를 출력하라).
[제약 사항]
학생의 수는 1000명이며, 각 학생의 점수는 0점 이상 100점 이하의 값이다.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고 그 다음 줄부터는 점수가 주어진다.
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스에 대한 답을 출력한다.
제출 코드
T = int(input())
for _ in range(T):
t = int(input())
# 각 숫자 빈도 저장위한 리스트 생성
nums = [0 for i in range(101)]
# 점수 입력
case = list(map(int, input().split()))
# 각 점수 등장시 더해줌
for num in case:
nums[num] += 1
keys = []
# 최빈수 등장 빈도 저장
max_value = max(nums)
# max_value와 등장 빈도가 일치하는 경우, 최빈값 key에 추가
for i, cnt in enumerate(nums):
if cnt == max_value:
keys.append(i)
# 최빈수 중 가장 큰 수 출력
print('#'+str(t),max(keys))
풀이
- 최빈수를 찾고, 최빈수 중에서 큰 수를 출력해야 한다.
- 각 숫자가 몇 번 나왔는지 기록하기 위해 0이 101개 담겨있는 nums 리스트를 생성한다.
- case 리스트에 학생들의 점수를 입력받아 저장한다.
- 각 숫자에 대해, nums 인덱스로 접근해 해당 숫자가 나올 때마다 1씩 더해준다.
- max_value에 nums에서 가장 큰 숫자를 저장해 최빈수의 출현 빈도를 저장한다.
- nums 리스트를 확인해, 등장 빈도가 max_value와 일치하는 경우 최빈수로 기록하기 위해 keys에 추가해준다.
- 최빈수 중 가장 큰 수를 출력해준다.
알아둘 사항
- enumerate : 인덱스와 값을 함께 줌
728x90
'coding test > SWEA' 카테고리의 다른 글
[SWEA/D2] 1859. 백만 장자 프로젝트 (0) | 2024.10.31 |
---|---|
[SWEA/D2] 1284. 수도 요금 경쟁 (1) | 2024.10.31 |
[SWEA/D1] 1933. 간단한 N의 약수 (1) | 2024.10.09 |
[SWEA/D1] 1936. 1대1 가위바위보 (0) | 2024.10.09 |
[SWEA/D1] 2019. 더블더블 (0) | 2024.10.09 |