A 직원은 09:00 출근 14:00 퇴근
B 직원은 12:00 출근 20:00 퇴근
점심 시간은 12:00-13:00
점심시간을 제외하고 A직원이나 B직원이 가게에 있었던 시간은 몇분인지 구하시오.
자료구조 중 SET은 중복이 존재하지 않는다는 특징이 있습니다.
중복제거((A의 근무 시간 목록) + (B의 근무 시간 목록)) - (점심시간)
중복 제거 후 결과의 길이를 구하면 중복 제거된 시간을 찾아낼 수 있습니다.
def get_work_time(start, end):
work_min_list = []
work_range = []
bgng_dt = datetime.datetime.strptime(start, "%Y%m%d%H%M")
end_dt = datetime.datetime.strptime(end, "%Y%m%d%H%M")
if bgng_dt == end_dt:
return work_min_list
else:
work_range = daterange_min(bgng_dt, end_dt - datetime.timedelta(minutes=1))
for dt in work_range:
work_min_list.append(dt)
return work_min_list
def daterange_min(bgng_dt, end_dt):
for n in range(int((end_dt - bgng_dt).seconds / 60) + 1):
yield bgng_dt + datetime.timedelta(minutes=n)
A_work_list = get_work_time("202204230900", "202204231400")
B_work_list = get_work_time("202204231200", "202204232000")
launch_list = get_work_time("202204231200", "202204231300")
print("결과:", len(list(set(A_work_list + B_work_list) - set(launch_list))))
결과 : 600