# ์๋ฃ๊ตฌ์กฐ
7785. ํ์ฌ์ ์๋ ์ฌ๋ (Silver 4)
์๊ทผ์ด๋ ์ธ๊ณ์ ์ธ ์ํํธ์จ์ด ํ์ฌ ๊ธฐ๊ธ์์ ์ผํ๋ค. ์ด ํ์ฌ์ ๊ฐ์ฅ ํฐ ํน์ง์ ์์ ๋ก์ด ์ถํด๊ทผ ์๊ฐ์ด๋ค. ๋ฐ๋ผ์, ์ง์๋ค์ ๋ฐ๋์ 9์๋ถํฐ 6์๊น์ง ํ์ฌ์ ์์ง ์์๋ ๋๋ค.
๊ฐ ์ง์์ ์๊ธฐ๊ฐ ์ํ ๋ ์ถ๊ทผํ ์ ์๊ณ , ์๋ฌด๋๋ ํด๊ทผํ ์ ์๋ค.
์๊ทผ์ด๋ ๋ชจ๋ ์ฌ๋์ ์ถ์ ์นด๋ ์์คํ ์ ๋ก๊ทธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๋ก๊ทธ๋ ์ด๋ค ์ฌ๋์ด ํ์ฌ์ ๋ค์ด์๋์ง, ๋๊ฐ๋์ง๊ฐ ๊ธฐ๋ก๋์ด์ ธ ์๋ค. ๋ก๊ทธ๊ฐ ์ฃผ์ด์ก์ ๋, ํ์ฌ ํ์ฌ์ ์๋ ๋ชจ๋ ์ฌ๋์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ก๊ทธ์ ๊ธฐ๋ก๋ ์ถ์ ๊ธฐ๋ก์ ์ n์ด ์ฃผ์ด์ง๋ค. (2 ≤ n ≤ 10^6) ๋ค์ n๊ฐ์ ์ค์๋ ์ถ์ ๊ธฐ๋ก์ด ์์๋๋ก ์ฃผ์ด์ง๋ฉฐ, ๊ฐ ์ฌ๋์ ์ด๋ฆ์ด ์ฃผ์ด์ง๊ณ "enter"๋ "leave"๊ฐ ์ฃผ์ด์ง๋ค. "enter"์ธ ๊ฒฝ์ฐ๋ ์ถ๊ทผ, "leave"์ธ ๊ฒฝ์ฐ๋ ํด๊ทผ์ด๋ค.
ํ์ฌ์๋ ๋๋ช ์ด์ธ์ด ์์ผ๋ฉฐ, ๋์๋ฌธ์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ์ด๋ฆ์ด๋ค. ์ฌ๋๋ค์ ์ด๋ฆ์ ์ํ๋ฒณ ๋์๋ฌธ์๋ก ๊ตฌ์ฑ๋ 5๊ธ์ ์ดํ์ ๋ฌธ์์ด์ด๋ค.
์ถ๋ ฅ
ํ์ฌ ํ์ฌ์ ์๋ ์ฌ๋์ ์ด๋ฆ์ ์ฌ์ ์์ ์ญ์์ผ๋ก ํ ์ค์ ํ ๋ช ์ฉ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
4
Baha enter
Askar enter
Baha leave
Artem enter
์์ ์ถ๋ ฅ1
Askar
Artem

์๊ฐ ์ด๊ณผ๊ฐ ๋ ์ ์์๋ดค๋๋ฐ
import sys
input = sys.stdin.readline
์์ ๋ ๋ฌธ์ฅ์ ์ ์ด์ฃผ๋ฉด ์๊ฐ์ด๊ณผ ์์ด ์ ์ถ์ด ๊ฐ๋ฅํ๋ค.
ํ์ด)
์ถ์ ๊ธฐ๋ก์ ์์ ํด๋นํ๋ n์ Input์ ์ฌ์ฉํด์ ์ ๋ ฅ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ถ์ ์นด๋ ์์คํ ์ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ enter_sys ๋์ ๋๋ฆฌ๋ฅผ ์ ์ธํ๋ค. for๋ฌธ์ ์ฌ์ฉํด์ name๊ณผ memory๋ฅผ ์ฐจ๋ก๋ก ์ ๋ ฅ๋ฐ๊ณ , memory์ ๊ฐ์ด enter์ธ ๊ฒฝ์ฐ ํด๋น memory์ name์ ํด๋นํ๋ ์ธ๋ฑ์ค์ ๊ฐ์ True๋ก ์ ์ฅํ๋ค.
memory์ ๊ฐ์ด leave์ธ ๊ฒฝ์ฐ, name์ ํด๋นํ๋ ๊ฐ์ ๋ฐฐ์ด์์ ์ ๊ฑฐํ๋ค.
๊ทธ ๋ค์ names์ enter_sys ๋ฐฐ์ด์ ๊ฐ์ ์ญ์์ผ๋ก ์ ๋ ฌํด์ ์ ์ฅํ ๋ค์, names ๋ฐฐ์ด์ name๊ฐ์ ์ฐจ๋ก๋ก ์ถ๋ ฅํ๋ค.
import sys
input = sys.stdin.readline
n = int(input())
enter_sys = {}
for i in range(n):
name, memory = map(str, input().split())
if memory == 'enter': # ์ถ์
๊ธฐ๋ก์ธ enter์ธ ๊ฒฝ์ฐ
enter_sys[name] = True # true ์ ์ฅ
else:
del enter_sys[name] # leave๋ฉด ์ด๋ฆ์ ๋ฐฐ์ด์์ ์ ๊ฑฐ
names = sorted(enter_sys, reverse=True) # ์ด๋ฆ ์ญ์์ผ๋ก ์ ์ฅ
for name in names:
print(name) # ์ด๋ฆ๋ง ์ถ๋ ฅ