프로그래밍/백준

[알고리즘] 백준 7785 파이썬 - 회사에 있는 사람

매 석 2023. 4. 20. 21:25
반응형

 

 

7785번: 회사에 있는 사람

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

www.acmicpc.net

문제

상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다.

각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다.

상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가 기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오.

 

문제풀이

import sys
input = sys.stdin.readline
tmp=dict()
for _ in range(int(input())):
    a,b=map(str,input().split())
    #01
    if b=="enter":
        tmp[a]=b
    #02
    if b=="leave":
        del tmp[a]
#03
tmp=sorted(tmp.keys(),reverse=True)
for i in tmp:
    print(i)

- #01 : b값이 enter이면 tmp[a]에 b를 저장한다.  사실 tmp[a]를 만드는 것 자체에 의미가 있다.

- #02 : b값이 leave이면 tmp[a]를 삭제한다.

- #03 : tmp의 key값을 사전 순의 역순으로 정렬한 후 한 줄에 하나씩 출력한다.