[BOJ]백준#19583 Silver 2 싸이버개강총회👬🏫 (Python, 파이썬)

임준성·2022년 8월 9일
0

백준 Algorithm

목록 보기
46/59
post-thumbnail

백준 19583번
https://www.acmicpc.net/problem/19583

문제



후기

⏰ 풀이시간 20분 ++⏰

문제가 꽤 이해하기 어려웠다. 문제에서 요구하는 출석의 조건에 해당하는 학생이

총 몇 명인지에 대해 구해야 하는 문제인데, 그 조건을 간략하게 말하자면

1. 개강총회 시작 전에 입장을 했으며,
2. 개강총회가 끝나고, 스트리밍이 끝날 때 까지 채팅을 한번이라도 친다.

이 2가지 조건을 모두 만족하는 학생의 수를 구하는 문제다.

우선 00:00 ~ 23:59 까지만 시간이 주어지므로, 문제에서 나타나진 시간을 분으로 환산했고,

해당 범위에 들어가면 dictionary 안에 넣는 식으로 접근했다.

2가지 딕셔너리 안에 모두 들어가있는 value값만 result에 더해줘서 count한다음 출력했다.

나의 풀이

import sys
input= sys.stdin.readline

S, E , Q = map(str,input().split()) #우선 출석시간을 분으로 바꿔준다. 
S = int(S[:2])*60 + int(S[3:])*1
E = int(E[:2])*60 + int(E[3:])*1
Q = int(Q[:2])*60 + int(Q[3:])*1

li = dict() #출석 딕셔너리
chat_li = dict() #제 시간 채팅 딕셔너리
result = 0 #결과값

while True:
    try:
        time, name = map(str,input().split())
        time = int(time[:2])*60 + int(time[3:])*1

        if time <=S: #개강총회 시작전에 입장했으면
            if name not in li.keys():
                li[name] = 1
        
        elif time >=E and time <= Q: #개강총회 끝나고 스트리밍이 끝나기 전에 채팅을 했으면
            if name not in chat_li.keys():
                chat_li[name] = 1
    except :
        break

for key, values in li.items(): # 채팅 딕셔너리와 출석 딕셔너리에 동시에 들어가있어야 출석처리된다.
    if key in chat_li.keys():
        result+=1

print(result)
profile
아무띵크 있이

0개의 댓글