https://www.acmicpc.net/problem/13414

 

13414번: 수강신청

입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목

www.acmicpc.net


풀이 과정


  1. 학번을 키, 신청 인덱스를 값으로 하는 딕셔너리를 만들어 준다.
    • 매 신청마다 인덱스를 1씩 증가시키면서 입력받은 키 값에 인덱스를 저장한다.
  2. 딕셔너리의 키-값을 값을 기준으로 오름차순 정렬시켜 준다.
    • 딕셔너리의 값이 낮은 경우 먼저 수강신청 한 것이며, 값이 높은 경우 늦게 수강신청 한것으로 간주
  3. 정렬된 딕셔너리의 앞에서 L개의 원소를 꺼내면 해당 인원들이 수강신청되는 인원들이므로 출력해주면 된다.

소스 코드


import sys

input = lambda : sys.stdin.readline().rstrip()

K, L = map(int, input().split())

hashtable = dict()
idx = 0
for _ in range(L):
    idx += 1
    sid = input()
    hashtable[sid] = idx

sugang_data = sorted(hashtable.items(), key=lambda x:x[1])
sugang_data = sugang_data[:K]

for student, _ in sugang_data:
    print(student)

+ Recent posts