본문으로 바로가기


SW Expert Academy 1204. 최빈수 구하기

 문제에서는 1000명의 수학 성적 중에 학생들이 가장 많이 맞은 점수를 찾아 반환해야 한다.

만약 가장 많은 빈도수가 나온 점수가 여러 경우일 경우에는 가장 높은 점수를 반환한다.

삼성 SW Expert Academy에서 푼 문제 리스트 보기

github에서 코드 보기

문제 풀이

이 문제는 Python의 내장 메소드를 활용하면 쉽게 문제를 풀 수 있다. python에는 리스트에 존재하는 동일한 원소의 갯수를 세주는 count 메소드가 존재한다.

100점부터 0점까지 점수의 빈도수를 계산해보자. 최대 빈도수 max_val_count를 0으로 초기화해두고 해당 빈도수보다 높은 빈도수가 나올 경우에만 max_val과 max_val_count를 바꿔준다. 100부터 시작하여 점점 낮은 점수들의 빈도수를 조사하므로 빈도수가 같더라도 이미 동일한 최대 빈도수 중에서 가장 높은 점수가 저장되어 있다. 

무엇보다도 max_val_count보다 높은 값일 경우에만 max_val과 max_val_count의 값을 바꿔주기 때문에 동일한 빈도수에 대한 최대값이 무엇인지 추가 계산 없이 최대 빈도수의 점수 중에 최고 점수를 반환할 수 있다.

파이썬 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def solve(arr):
    max_val_count = 0
    max_val = 0
    for i in range(100-1-1):
        count = arr.count(i)
        if max_val_count < count:
            max_val_count = count
            max_val = i
    return max_val
 
 
if __name__ == "__main__":
    t = int(input())
    for i in range(t):
        c = int(input())
        array = list(map(int,input().strip().split()))
        print("#{0} {1}".format(c, solve(array)))
cs

#python 최빈수 구하기 #1204 최빈수 구하기 #sw expert 1204. 최빈수 구하기