현제의 현재이야기
[백준/python] 13414 - 수강신청 본문
13414번: 수강신청
입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목
www.acmicpc.net
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
[Python] list 중복 제거(순서 유지(OrderedDict, Dict), 순서 무관(set))
보통 List를 사용할 때 내부 중복 제거를 위해서 단순히 set으로 중복을 제거한 후, 다시 list로 변환하는 경우가 많은것 같다. 나 역시도 간단했기 때문에 제일 많이 사용한 방식이다. sample_list = [1,
yjs-program.tistory.com
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
[python] 파이썬 사전 딕셔너리 값 value 로 정렬하는 방법 - lambda 식 응용 - 파이썬으로 단어 수 세기
안녕하세요 한주현입니다. 오늘은 python에서 딕셔너리의 값으로 정렬하는 방법에 대해 알아보겠습니다. 들어가며 python 의 사전형은 순서가 없는 자료형입니다. 그런데 가끔 우리는 사전의 값
korbillgates.tistory.com
.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 |