https://www.acmicpc.net/problem/7785
조건
- 회사의 출퇴근 로그가 주어진다.
- 로그가 주어졌을때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오.
입력
기록의 수 N이 주어진다. (2≤n≤10^6) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고, enter 나 leave 가 주어진다. enter인 경우는 출근, leave는 퇴근이다.
SOL)
이 문제를 봤을때, dictionary를 만들어서, enter인 친구들의 이름을 담아서, 출력해주면 되는 간단한 문제인거 같음.
시간제한이 1초고, 입력이 10^6이니까,O(N)을 넘으면 안됨.
빠른 입력을 써줘야겠다.입력이 매우 많으니까
사전의 역순으로 출력 → sorted(기준,reverse = True)는 , 기준으로 된것의 역순으로 출력한다.
문자열의 기준은 사전 순이기 때문에, 사전의 역순으로 정렬하는 거임.
import sys
input=sys.stdin.readline
dic = {}
n= int(input())
for i in range(n):
k,v = map(str,input().split())
if v =="enter" : dic[k] = "enter"
else: del dic[k]
dic = sorted(dic.keys(),reverse=True)
for k in dic:
print(k)
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/2667/파이썬] 단지 번호 붙이기 (0) | 2021.12.27 |
---|---|
[백준/17289/파이썬] 오큰수 (0) | 2021.12.16 |
[백준/5397/파이썬] 키로거 (0) | 2021.12.16 |
[백준/1715/파이썬] 카드 정렬하기 (0) | 2021.12.16 |
[백준/2075/파이썬] N번째 큰 수 (0) | 2021.12.16 |