본문 바로가기

코딩테스트/SWEA

[Python, 파이썬] SWEA 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기

각 테스트케이스의 최빈수를 구하는 문제.

 

 

T = int(input()) # 테스트 케이스의 수 T

for test_case in range(1, T+1):
    N = int(input()) # 테스트 케이스의 번호
    score = list(map(int, input().split())) # 학생의 점수들


    table = [0 for i in range(101)] # 각 score의 개수를 count할 표

    # 각 score를 count 한다
    for num in score:

        table[num] += 1 # count


    # 가장 큰 값, 최빈수 구하기
    index = max(table) # 가장 많이 나온 횟수
    max_value = [i for i, value in enumerate(table) if value==index] # 최고로 많이 나온 값들
    

    print("#%d %d" %(test_case, max(max_value)))
 

 

 


[문제풀이]


최빈수란 특정 자료에서 가장 여러번 나타나는 값을 의미한다.

각 score를 배열의 index에 맞춰 카운팅해서 가장 많이 나온 값을 구한다.

 

max_value = [i for i, value in enumerate(table) if value==index] # 최고로 많이 나온 값들
max(max_value) # 가장 많이 카운팅 된 값중 최댓값!
 

이때, 최빈수가 여러개 일때는 가장 점수가 큰 값을 출력해야 하므로 가장 많이 카운팅 된 값들을 뽑아 그 중 최댓값을 출력하였다.