현제의 현재이야기
[백준/python] 13414 - 수강신청 본문
from collections import deque, OrderedDict
k, l = tuple(map(int, input().split()))
student = deque()
for _ in range(l):
a = input()
student.appendleft(a)
student = list(student)
student = list(dict.fromkeys(student))
for _ in range(k):
print(student.pop())
if len(student) == 0:
quit()
| 알고리즘
1. 거꾸로 다받고, 순서지키면서 중복제거.
2. 그 후, 뒤에서 몇 번 pop.
예)
입력 : a, b, c, a, d, c
student = [c, d, a, c, b, a]
dict.fromkeys(student) = [c, d, a, b]
이걸 거꾸로 해보면 b, a, d, c 인데 이러면 중복한 것의 앞의 것을 제거한 것과 마찬가지가 된다.
fromkeys : 설명 블로그. -> 순서를 지키면서 리스트 중복 제거
https://yjs-program.tistory.com/271?category=804886
import sys
input = sys.stdin.readline
k, l = map(int, input().split()) # k: 수강 가능 인원, l: 대기 목록 길이
dict = {}
for i in range(l):
dict[input().strip()] = i
sorted_dict = sorted(dict.items(), key=lambda x: x[1])
for i in range(k):
if i < len(sorted_dict):
print(sorted_dict[i][0])
else:
break
https://korbillgates.tistory.com/171
.items가 딕셔너리를 튜플로 (키, 벨류)로 만들어준다.
'algorithm' 카테고리의 다른 글
[백준/python] 2512 - 예산 (0) | 2022.07.20 |
---|---|
[백준/python] 9205 - 맥주 마시면서 걸어가기 (0) | 2022.07.19 |
[백준/python] 16206 - 롤케이크 (0) | 2022.07.07 |
[백준/python] 2002 - 추월 (0) | 2022.07.06 |
[백준/python] 18115 - 카드놓기 (0) | 2022.07.05 |
Comments