Coding Test/BaekJoon_Python
백준 7785 <회사에 있는 사람> Python
JunOnJuly
2023. 11. 25. 13:09
728x90
https://www.acmicpc.net/problem/7785
7785번: 회사에 있는 사람
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는
www.acmicpc.net
입력이 긴 문제의 경우 Input() 보다 sys.stdin.readline() 을 사용하는 것이 좋습니다. 그리고 readline 뒤에 \n 같은 공백 문자도 같이 입력되니 strip() 을 사용하면 깔끔하게 받아올 수 있습니다. 문제는 Dict 타입을 사용하면 쉽게 풀 수 있습니다.
import sys
from collections import defaultdict
def solution(n, data_list):
# 출입 명부 딕셔너리
in_out_dict = defaultdict(int)
# 순회하면서 상태 최신화
for name, state in data_list:
if state == 'enter':
in_out_dict[name] = 1
else:
in_out_dict[name] = 0
# 딕셔너리 정렬
in_out_dict = dict(sorted(in_out_dict.items(), reverse=True))
# 순회하며 출력
for key, value in in_out_dict.items():
if value:
print(key)
n = int(input())
data_list = [sys.stdin.readline().strip().split(' ') for _ in range(n)]
solution(n, data_list)
728x90