링크
백준 1713 후보 추천하기
처음엔 큐를 만들어서 오래된 것을 빼주려 했는데 그렇게 하면 점수를 카운트 할 수 없어서(물론 할라면 하지만 큐를 사용하는 의미가 없다.) 포기했다.
다음은 사진틀을 만들고 추천 학생수만큼 리스트를 만들어서 학생번호를 인덱스로 해 추천수를 계산하려 했으나 괜히 리스트만 많이 만드는 것 같아 다른방법을 생각해보기로 했다.
그리고 생각한게 사진틀의 인덱스와 매치해서 추천수를 저장하는 리스트를 만들기로 했다.
설명은 주석으로 대체
N = int(input()) # 사진틀 개수
Vote = int(input()) # 총 추천 회수
students = list(map(int, input().split())) # 추천 학생 번호
picture = [] # 사진틀
score = [] # 사진틀 인덱스와 매치해서 추천수 저장할 리스트
for i in range(Vote):
if students[i] in picture: # 사진틀에 있으면
for j in range(len(picture)): #이부분 N으로 놓고 계속 틀렸음.. ㅋㅋㅋㅋㅋ
if students[i] == picture[j]:
score[j] += 1 #점수증가
else: # 사진틀에 없고
if len(picture) >= N: # 사진틀 꽉차있으면
for j in range(N):
if score[j] == min(score): #가장 작은 점수 찾고
del picture[j]
del score[j]
break #먼저 찾으면 스탑 왜냐면 오래된거일수록 인덱스 앞에 있음
picture.append(students[i]) #새로운거 뒤에 더해줌
score.append(1)
picture.sort()
print(' '.join(map(str, picture)))