코딩/Baekjoon

[Python] 7785 :: 회사에 있는 사람

연 동 2023. 5. 16. 14:22

https://www.acmicpc.net/problem/7785

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

 

1트 : 실패(시간초과)

n = int(input())
i = 0
worker = []

while (i < n):
    A, B = map(str, input().split())

    if B == "enter":
        worker.append(A)
    elif B == "leave":
        worker.remove(A)

    i += 1

worker.sort(reverse=True)
length = len(worker)
a = 0

while (a < length):
    print(worker[a])
    a += 1

 

2트 ~ n트 : 내가 알고 있는 모든 방법을 통해 풀려고 노력을 했으나 충격적이게도 전부 시간 초과가 기록되었다 ;;

그래서 직접 찾아보았는데 "리스트 자료구조를 사용하여 풀면 시간 초과가 난다. 리스트가 아닌 딕셔너리 자료구조를 사용하여 풀면 된다." 라는 말을 보게 되었다. 

import sys
input = sys.stdin.readline          #시간초과 해결 꿀팁 

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

for i in range(n):
    A, B = map(str, input().split())
    if B == "enter":
        worker[A] = True
    else:
        del worker[A]

namelist = sorted(worker, reverse=True)

for A in namelist:
    print(A)

충격적이게도 그동안 나를 괴롭히던 시간초과를 해결할 수 있었다.

그나마 알고리즘은 맞았는데 이거 좋아해도 되는거 맞나?

 

 


참고한 글

https://m.blog.naver.com/crm06217/221832195003

 

8. 파이썬(Python) 백준 시간초과 해결, 빠른 입력 (import sys), 리스트 함수 시간 복잡도 (Time Complexity)

백준을 풀다보면 시간 초과가 뜨기도 하는데, 파이썬 (Python) 언어의 경우에 시간 초과를 해결할 수 있는...

blog.naver.com

 

https://lifeofyoori.tistory.com/77

 

[백준] 7785번: 회사에 있는 사람- 파이썬 (리스트 vs 딕셔너리)

https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이

lifeofyoori.tistory.com

728x90

'코딩 > Baekjoon' 카테고리의 다른 글

[Python] 1302 :: 베스트셀러  (0) 2023.05.16
[Python] 1764 :: 듣보잡  (1) 2023.05.16
[C] 20230214 - 반복문(10) ~ (11)  (0) 2023.02.15
[C] 20230213 - 조건문 (7), 반복문(1)~(9)  (0) 2023.02.13
[C] 20230211 - 조건문 (6)  (0) 2023.02.13