반응형
[백준] Sil5 | 해시 | 7785 회사에 있는 사람 Python
https://www.acmicpc.net/problem/7785
구상
- 풀이 1 : 딕셔너리 쓰면 곰방곰방 풀린다
- 딕셔너리 값 삭제는 del이나 pop을 쓴다.
- items()를 쓰면 key, value 쌍을 얻지만
keys()를 쓰면 key만 얻을 수 있고 더 빠르다.
- 풀이 2 : set을 써서 풀 수도 있다. dictionary써도 value에 넣을 게 딱히 없음.. key만 갖고있는 set으로도 풀어봤다.
- 공간, 시간 복잡도는 거의 차이가 없었다. 신기하네
- join을 쓰면 출력이 훨 빨라져서 츄라이!
- sys.stdout.write도 써볼까..
트러블 슈팅
- x
코드 - set
# v2 : 해시 - set
import sys
input = sys.stdin.readline
N = int(input())
people = set()
for _ in range(N) :
name, log = input().split()
if log == "leave" :
people.discard(name) #discard : 해당 키값 존재여부 상관없이 삭제
else : #log == "enter"
people.add(name)
#키값만 사전순 역순으로 출력
#출력 - 그냥 for문 돌면서 이렇게 해도 되고
# for name in sorted(people, reverse=True) :
# print(name)
#출력 - join써서 이렇게 해도 됨. 이게 훨 빠름!
print("\n".join(sorted(people, reverse=True)))
코드 - dictionary
# v1 : 해시 - dictionary
import sys
input = sys.stdin.readline
N = int(input())
people = {} # set으로도 해보기
for _ in range(N) :
name, log = input().split()
if log == "leave" :
del people[name]
else : #log == "enter"
people[name] = True #암것도 저장 안해도 돼서 암거나 저장
#키값만 사전순 역순으로 출력
#출력 - 그냥 for문 돌면서 이렇게 해도 되고
# for name in sorted(people.keys(), reverse=True) :
# print(name)
#출력 - join써서 이렇게 해도 됨. 이게 훨 빠름!
print("\n".join(sorted(people.keys(), reverse=True)))
반응형
'DSA > Algorithm' 카테고리의 다른 글
[백준] 11725 트리의 부모 찾기 | Sil2 | BFS,DFS Python (0) | 2024.05.30 |
---|---|
[백준] Sil2 | 해시 | 19583 싸이버개강총회 Python (0) | 2024.05.30 |
[백준] Sil3 | 해시 | 17219 비밀번호 찾기 Python (0) | 2024.05.29 |
[백준] Gol5 | 투 포인터,이진탐색 | 9024 두 수의 합 Python (0) | 2024.05.28 |
[백준] Sil3 | 정렬,이진탐색 | 3273 두 수의 합 Python (0) | 2024.05.28 |