풀이
학생들의 추천 횟수를 입력받아 최종 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()))