풀이


학생들의 추천 횟수를 입력받아 최종 3인을 추려내는 문제이다.

딕셔너리를 통해 학생들의 숫자를 key값으로 [추천수, 오래된순] 을 value값으로 저장한다.

딕셔너리의 길이가 3 보다 작을 경우 새로 값들을 추가하고 3 이상일 경우 제외할 학생을 찾아야한다.

sorted 함수의 key 설정을 통해 추천수 다음으로 오래된순으로 정렬을 한 후 해당하는 학생의 key 를 통해 해당 학생을 제외한다.

모든 학생들의 추천이 끝난 후 딕셔너리에 남아있는 키값만 정렬해서 출력해준다.

소스코드


# 후보 추천하기
import sys
input = sys.stdin.readline
 
n = int(input())
students = int(input())
name = list(map(int, input().split()))
 
board = dict()
 
for i in range(students):
    if name[i] in board:
        board[name[i]][0] += 1
    else:
        if len(board) < n:
            board[name[i]] = [1, i]
        else:
            del_student = sorted(board.items(), key=lambda x:(x[1][0], x[1][1]))
            del_name = del_student[0][0]
            del(board[del_name])
            board[name[i]] = [1, i]
 
print(*sorted(board.keys()))

References