
✔️ silver 2
구현
자료 구조
문자열
해시를 사용한 집합과 맵
예제 입력2에서 제때 퇴장을 안찍어서 출석 날아간 나같은 느낌이 강하게 들었다..
s, 종료시간e, 스트리밍 종료시간q를 모두 분단위로 계산해준다.try-except를 이용해 비정상 입력이 들어올 때까지 모두 받는다.names 집합에 넣어 입장을 체크한다.names 집합에 있는 경우(= 입장한 사람인 경우) 퇴장 체크를 하고 중복 퇴장이 되지 않도록 names에서 이름을 제거한다.# 싸이버개강총회
# hash
import sys
input = sys.stdin.readline
def to_seconds(t: str):
m, s = map(int, t.split(':'))
return m * 60 + s
if __name__ == "__main__":
s, e, q = input().split()
s_sec = to_seconds(s)
e_sec = to_seconds(e)
q_sec = to_seconds(q)
names = set()
count = 0
while 1:
try:
t, name = input().split()
t_sec = to_seconds(t)
# 입장 체크
if t_sec <= s_sec:
names.add(name)
# 퇴장 체크
elif e_sec <= t_sec <= q_sec:
if name in names:
names.remove(name)
count += 1
except Exception as e:
# print(e)
break
print(count)
사실은 예제 입력2가 있는줄 모르고 한참 반례를 찾아 헤맸다.
결국은 중복 퇴장을 체크하지 않은 문제였다.
문제는 역시 꼼꼼히 읽어야한다.