알고리즘

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

담쏙 2021. 9. 15. 22:59
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