Coding Test/BaekJoon_Python

백준 13414 <수강신청> Python

JunOnJuly 2023. 11. 25. 13:07
728x90

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

 

13414번: 수강신청

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

www.acmicpc.net


길이가 긴 입력의 경우, input() 보다는 sys.stdin.readline() 을 사용하는게 더 빠릅니다. 나머지는 Dict 자료구조를 사용하면 쉽게 해결할 수 있습니다.


import sys
from collections import defaultdict


def solution(K, L, data_list):
    # 수강 대기 목록 사전
    wait_dict = defaultdict(int)
    # 사전 최신화
    for idx, data in enumerate(data_list):
        wait_dict[data] = idx
    # 사전 정렬
    wait_dict_list = sorted(wait_dict.items(), key=lambda x:x[1])
    # 출력
    for idx, (key, value) in enumerate(wait_dict_list):
        if idx == K:
            break
        print(key.strip())


K, L = map(int, sys.stdin.readline().split())
data_list = [sys.stdin.readline() for _ in range(L)]
solution(K, L, data_list)

 

728x90