룰루코딩

백준 7785 회사에 있는 사람 본문

백준

백준 7785 회사에 있는 사람

rulru01 2024. 10. 1. 00:36

문제


솔루션

import sys
input=sys.stdin.readline

n = int(input())
li=set()
for _ in range(n):
    name,inout = map(str,input().split())
    if inout=="enter":
        li.add(name)
    elif inout=="leave":
        li.remove(name)
li = sorted(li, reverse=True)
for i in li:
    print(i)

깨달은점

처음에 list로 풀었다가 시간초과가 떴다.

그래서 set로 바꾸었고

set으로 바꿈으로써 li.append대신 li.add 로 바꾸었다.

또한 sort()는 리스트 함수이므로 sorted()로 바꾸어서 풀었다. 

 

시간을 더 단축시키기 위해서는 이전문제들처럼 딕셔너리로 푸는 것이 좋다.

import sys
input = sys.stdin.readline

n = int(input())
dict = {}

for _ in range(n):
    name, inout = input().rstrip().split()
    dict[name] = inout
    
    if inout == "leave":
        del dict[name]


dict = sorted(dict.keys(), reverse=True)

for i in dict:
    print(i)

.rstrip()은 split()자체에서 제거해줘서 안써도 되지만 사용하면 시간이 약간 더 단축되었다.

그리고 map(str,input())은 안써도 됐다.(시간이 더 늘어남)

 

print("\n".join(sorted(dict.keys(), reverse=True)))

이건 출력 부분을 더 간단하게 줄일 수 있는 코드이다.

 

'백준' 카테고리의 다른 글

백준 1260 DFS와 BFS  (1) 2024.10.01
백준 1094 막대기  (0) 2024.10.01
백준 17219 비밀번호 찾기  (2) 2024.09.28
백준 1620 나는야 포켓몬 마스터 이다솜  (2) 2024.09.27
백준 1789 수들의 합  (1) 2024.09.26