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
'Coding Test > BaekJoon_Python' 카테고리의 다른 글
백준 9663 <N-Queen> Python (0) | 2023.11.27 |
---|---|
백준 25192 <인사성 밝은 곰곰이> Python (0) | 2023.11.26 |
백준 13414 <수강신청> Python (0) | 2023.11.25 |
백준 20057 <마법사 상어와 토네이도> Python (0) | 2023.11.24 |
백준 15686 <치킨 배달> Python (2) | 2023.11.23 |