728x90
https://www.acmicpc.net/problem/19583
19583번: 싸이버개강총회
첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는
www.acmicpc.net
처음에는 H, M을 모두 나눠서 따로 if 문을 작성해 줬었는데 무슨 조건이 빠진 건지 계속 틀렸다고 나왔다.
근데 생각해보니 24시간으로 표시하니까 HH:MM 자체를 4자리 숫자로 만들어도 되는 거였다.
수많은 if문이 중첩되어 있던 이전의 코드보다 훨씬 깔끔하고 알아보기 쉬웠다.
작은 아이디어 하나로 깔끔한 코드를 짤 수 있다는 점에 매일 놀란다.
import sys
input = sys.stdin.readline
S, E, Q = input().split()
S = int(S[:2])*100 + int(S[3:])
E = int(E[:2])*100 + int(E[3:])
Q= int(Q[:2])*100 + int(Q[3:])
check = set()
cnt = 0
while True:
try:
clock, nickname = input().split()
my_clock = int(clock[:2])*100+int(clock[3:])
if my_clock <= S:
check.add(nickname)
if E <= my_clock <= Q:
if nickname in check:
cnt += 1
check.remove(nickname)
except:
break
print(cnt)
'알고리즘' 카테고리의 다른 글
[백준] 12787. 지금 밥이 문제냐 (0) | 2021.09.16 |
---|---|
[SWEA] 1218. 괄호 짝짓기 (0) | 2021.09.16 |
[백준] 21737. SMUPC 계산기 (0) | 2021.09.15 |
[백준] 9536. 여우는 어떻게 울지? (0) | 2021.09.14 |
[백준] 11507. 카드셋트 (0) | 2021.09.13 |