본문 바로가기
알고리즘/자료구조

[백준][Python] 19583번 싸이버개강총회

by 임짠짠 2022. 9. 14.
반응형
 

19583번: 싸이버개강총회

첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는

www.acmicpc.net

 

 

코드

import sys
start,end,stream = input().split()
start = 60*int(start[:2]) + int(start[3:])
end = 60*int(end[:2]) + int(end[3:])
stream = 60*int(stream[:2]) + int(stream[3:])
att = set()
cnt = 0
while 1:
	try:
		time, user = sys.stdin.readline().split()
		time = 60*int(time[:2]) + int(time[3:])
		if time <= start:
			att.add(user)
		elif time >= end and time <= stream:
			if user in att:
				cnt += 1
				att.remove(user)
		
	except:
		break

print(cnt)

 

설명

주어진 시간을 개강총회 시작 시간, 종료 시간, 스트리밍 종료 시간과 비교하기 위해 (60*시간 + 분) 으로 표현했다.

 

시작 시간보다 작거나 같은 경우 제 시간에 입장했으므로 set에 추가를 해줬다. 같은 사람이 개강 총회 시작 전에 여러 번 채팅을 치는 경우도 존재할 수 있기 때문에 set을 이용해서 중복을 방지했다.

 

개강총회 종료 시간과 스트리밍 종료 시간 사이에 채팅을 친 경우 set에 이름이 존재하면 cnt를 1 증가시켰고 해당 이름은 set에서 없애줬다.

반응형

댓글