알고리즘 문제(SOL)

[백준/7785/파이썬] 회사에 있는 사람

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

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

조건

  • 회사의 출퇴근 로그가 주어진다.
  • 로그가 주어졌을때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오.

입력

기록의 수 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)