Python/백준 문제 풀이
[BOJ] 7785번 회사에 있는 사람 풀이
서원두
2022. 7. 21. 16:49
최종적으로 회사에 남아있는 사람들을 역순으로 출력하는 문제다.
여기서는 set 이라는 해시(hash)형 자료구조를 사용한다.
set 안의 메서드들 중 추가와 삭제는 둘 다 O(1)의 압도적인 성능을 자랑한다. list의 경우엔 각각 O(1)과 O(N)이다.
list로도 풀 수는 있지만, 좋은 자료구조를 썼다고 평가받진 못할 것이다.
import sys
if __name__ == '__main__':
n = int(sys.stdin.readline().rstrip())
now_comp = set()
for _ in range(n):
now_name, status = sys.stdin.readline().rstrip().split()
if status == 'enter':
now_comp.add(now_name)
else:
now_comp.remove(now_name)
now_comp = sorted(list(now_comp), reverse=True)
print(*now_comp, sep='\n')
set 자료구조를 list 자료구조로 바꿀 수 있다는 것을 알 수 있다면 쉽게 풀 수 있다. 역순 정렬만 주의하자.
728x90