(python3)
1713번: 후보 추천하기
첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대
www.acmicpc.net
아이디어
사진 틀이 꽉 차있을 때 새로운 후보가 들어오면 기존 사진틀의 후보 중 우선순위가 가장 낮은 후보를 삭제해야합니다.
우선순위는 1. 득표수 높은 순, 2. 나중에 들어온 순 으로 결정됩니다.
저는 후보 득표를 빨리 올리기 위해서 dict를 사용했고 삭제할 후보를 찾아야할 때 마다 정렬하는 방식으로 해결했습니다.
코드
import sys
def solution(input) :
N = int(input().strip())
M = int(input().strip())
L = list(map(int,input().split()))
P = {} # 사진틀 dict
for i,l in enumerate(L) :
if l in P : # 틀에 있는 후보는 득표
P[l][1] += 1
else : # 틀에 없는 후보이고
if len(P) >= N : # 사진틀이 꽉 차있으면
del P[sorted(P, key = lambda x : (P[x][1], P[x][0]))[0]] # 정렬 후 후순위 후보 삭제
P[l] = [i,1]
print(' '.join([str(n) for n in sorted(P)])) # 사진틀에 남은 후보들 번호순 출력
input = sys.stdin.readline
solution(input)
my solved.ac :
solved.ac
알고리즘 문제해결 학습의 이정표 🚩 Baekjoon Online Judge 문제들의 난이도 및 티어 정보를 제공하는 사이트입니다.
solved.ac
'Algorithem > 백준 PS with code' 카테고리의 다른 글
백준 #1138 - [S2] 한 줄로 서기 (0) | 2023.06.27 |
---|---|
백준 #2075 - [S2] N번째 큰 수 : 최소힙 (0) | 2023.06.26 |
백준 입문자를 위한 IDE 및 제출 팁 (0) | 2023.06.22 |
백준 #2304 - [S2] 창고 다각형 : 구현 (0) | 2023.06.21 |
백준 #1406 - [S2] 에디터 : 스택 (0) | 2023.06.20 |