Programming/백준
[실버 5] 백준 7785 - 회사에 있는 사람 (파이썬)
pental
2025. 4. 14. 16:52
https://www.acmicpc.net/problem/7785
풀이
이 문제는 회사에 출퇴근한 사람을 바탕으로 회사에 남아 있는 사람을 구하는 문제이다.
나는 단순히 Dictionary를 생각했지만, Set으로도 풀이가 가능하다고 생각해서 두개의 버전을 작성하였다.
먼저 Dict의 경우 people 딕셔너리에 사람이 들어 있지 않고, 상태가 enter인 경우에 dict에 추가하였다.
그외에는 딕셔너리에서 삭제하는 방법을 생각했다.
for i in range(N) :
name, status = input().split()
if name not in people and status == "enter" :
people[name] = status
else :
del people[name]
문제 조건에서는 현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력하라기에, sort(reverse=True)를 사용하여 정렬하고 출력하였다.
people = list(people.keys())
people.sort(reverse=True)
for i in people :
print(i)
코드
# 백준 7785 - 회사에 있는 사람
# 분류 : 자료 구조
N = int(input())
people = {}
for i in range(N) :
name, status = input().split()
if name not in people and status == "enter" :
people[name] = status
else :
del people[name]
people = list(people.keys())
people.sort(reverse=True)
for i in people :
print(i)
set을 이용한 풀이
N = int(input())
st = set()
for _ in range(N) :
name, action = input().split()
if action == "enter" :
st.add(name)
if action == "leave" :
st.remove(name)
st = list(st)
st.sort()
st = st[::-1]
for i in st :
print(i)