해시를 이용한 집합 어쩌구 문제인데 파이썬은 '딕셔너리'로 가볍게 풀 수 있는 문제
우선 제한 시간은 1초이고 입력이 10^6이니 돌발행동만 안하면 될듯하다.
입력 예제에는 안나와 있으나 enter했다가 leave하고 다시 enter/leaver 반복할 수 있는 상황.
번호가 주어지지 않고 이름과 그에 해당하는 상태가 주어진 상황.
위를 보고 딕셔너리를 떠올리면 문제는 끝난다.
import sys
input = sys.stdin.readline
n = int(input())
dic = {}
for i in range(n):
a, b= input().split()
dic[a]=b
dic= dict(sorted(dic.items(), key=lambda x: x[0], reverse=True))#문제에서 사전순 역순 출력 요구
for i,j in dic.items():
if j=='enter':#마지막 상태가 enter면 출력
print(i)
아래처럼 딕셔너리도 정렬이 가능하단 사실.. 알고 계셨나요?
#key로 정렬
dic = dict(sorted(dic.items()))
#value로 정렬
dic = dict(sorted(dic.items(), key = lambda x:x[1]))
역시 파이썬 짱
'파이썬 > 백준' 카테고리의 다른 글
[백준 16236번 | 골드3] 아기상어 파이썬 풀이 (0) | 2024.01.20 |
---|---|
[백준 2252번 | 골드3] Python 풀이 (0) | 2024.01.08 |
[1922, 4386번 | 골드4, 3] 최소 신장 트리 2 (0) | 2023.12.10 |
[백준 1197번 | 골드4] 최소 스패닝 트리 (1) | 2023.12.08 |
[백준 30823번 | 실버4] Python 풀이 (4) | 2023.12.07 |