[SWEA] 1204 - 최빈수 구하기

ttaho·2022년 11월 10일

SWEA

목록 보기
14/38

문제

어느 고등학교에서 실시한 1000명의 수학 성적을 토대로 통계 자료를 만들려고 한다.

이때, 이 학교에서는 최빈수를 이용하여 학생들의 평균 수준을 짐작하는데, 여기서 최빈수는 특정 자료에서 가장 여러 번 나타나는 값을 의미한다.

다음과 같은 수 분포가 있으면,

10, 8, 7, 2, 2, 4, 8, 8, 8, 9, 5, 5, 3

최빈수는 8이 된다.

최빈수를 출력하는 프로그램을 작성하여라 (단, 최빈수가 여러 개 일 때에는 가장 큰 점수를 출력하라).

[제약 사항]

학생의 수는 1000명이며, 각 학생의 점수는 0점 이상 100점 이하의 값이다.

[입력]

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고 그 다음 줄부터는 점수가 주어진다.

[출력]

#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스에 대한 답을 출력한다.

풀이

점수를 인덱스로 하는 크기가 101인 count 리스트에 점수가 등장할때마다 리스트의 값을 1씩 더해준다.
count 리스트를 전체순회하면서 0점등장 횟수를 max라 두고 max보다 더 큰 값이 나오면 max를 그 값으로 바꿔주고, max_index에 그 점수인 index를 저장해준다.
최빈수가 여러개면 가장 큰 수가 최빈수가 된다.

코드

T = int(input())
for _ in range(T):
    tc = int(input())
    count = [0]*101
    student_score = list(map(int, input().split()))
    for i in range(len(student_score)):
        count[student_score[i]] += 1
    max = count[0]
    for i in range(101):
        if max <= count[i]:
            max = count[i]
            max_index = i
    print(f'#{tc} {max_index}')
profile
SW Engineer

0개의 댓글