Python/백준 문제 풀이

[BOJ] 7785번 회사에 있는 사람 풀이

서원두 2022. 7. 21. 16:49

[BOJ] 7785번 회사에 있는 사람 문제

최종적으로 회사에 남아있는 사람들을 역순으로 출력하는 문제다.

나도 출퇴근하게 해줘...

여기서는 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