https://www.acmicpc.net/problem/19583
19583번: 싸이버개강총회
첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는
www.acmicpc.net
import sys
input = sys.stdin.readline
S,E,Q = input().split()
S = int(S[:2])*60 + int(S[3:])
E = int(E[:2])*60 + int(E[3:])
Q = int(Q[:2])*60+ int(Q[3:])
res = set()
result = 0
while True:
try:
time, name = input().split()
time = int(time[:2])*60 + int(time[3:])
if time <= S:
res.add(name)
elif name in res and (E<=time<=Q):
res.remove(name)
result +=1
except:
break
print(result)
풀이
처음에는 dict로 값을 담아서 풀다가, 먼저 들어온 사람들만 뽑아서 비교하면 되기때문에
들어오는 순서대로 값을 set배열에 담았다
set은 중복이 허용되지 않고, 순서가 정해지지않는 자료구조이다
이후 지워질때 값을 하나 체크하면서 풀어나갔다
또한, try except를 사용하면서
몇개의 값이 들어오는지 모르기때문에 예외처리를 해주었다.
'💡 Codeing Test > 백준' 카테고리의 다른 글
백준 5525) IOIOI (python) (0) | 2024.03.07 |
---|---|
백준 1495) 기타리스트 (python) (0) | 2024.03.05 |
백준 3190) 뱀 (python) (1) | 2024.02.26 |
[백준_13335] 트럭 (python) (0) | 2023.10.05 |
[백준_2468번] 안전 영역 (python) (0) | 2023.08.05 |