https://www.acmicpc.net/problem/9203
처음 생각한 방향
> datetime을 이용하여 연산 후 정렬해서 풀어야겠다.
해결 방법
> 들어오는 입력 중 날짜에 관한 정보를 datetime을 이용하여 datatime자료형으로 바꾼다.
> 청소하는 시간을 더한 시간과 입실시간을 저장한다.
> 정렬 후 datetime 연산을 통해서 방을 더 잡아야하는지 그럴 필요가 없는지 판단한다.
결과
> 틀렸다.
틀린 이유
> 모르겠다. 정답자 5퍼 문제라서 선택하였는데 그래서 그런지 질문이 하나도 없어서 혼자 생각을 해보고 틀린 이유를 알아내야겠다.
코드
import sys, datetime, copy
num = int(sys.stdin.readline())
for i in range(num):
book_num, clean_time = map(int, sys.stdin.readline().split())
clean_time = divmod(clean_time, 60)
hotel_info = list()
for j in range(book_num):
book_code, in_day, in_day_time, out_day, out_day_time = sys.stdin.readline().split()
checkin = datetime.datetime.strptime(in_day + " " + in_day_time, '%Y-%m-%d %H:%M')
checkout = datetime.datetime.strptime(out_day + " " + out_day_time, '%Y-%m-%d %H:%M')
real_checkout = checkout + datetime.timedelta(hours=clean_time[0], minutes=clean_time[1])
hotel_info.append((checkin, real_checkout))
hotel_info.sort(key= lambda x : x[1])
stay = list()
stay.append(hotel_info[0])
hotel_info = hotel_info[1:]
max_room = 0
count = 1
for i in hotel_info:
if i[0] - stay[-1][1] < datetime.timedelta(0):
count += 1
stay.append(i)
max_room = max(len(stay),max_room)
else:
pop_count = count
for j in range(pop_count):
count -= 1
stay.pop()
stay.append(i)
max_room = max(len(stay), max_room)
print(max_room)
'알고리즘' 카테고리의 다른 글
백준_15957_음악추천(해결 못함) (0) | 2020.02.14 |
---|---|
백준_2385_Secret Sharing(해결 못함) (0) | 2020.02.13 |
백준_3649_로봇 프로젝트 (0) | 2020.02.11 |
백준_1717_집합의 표현 (0) | 2020.02.10 |
백준_15956_숏코딩(해결 못함2)... (0) | 2020.02.09 |
댓글