코테 8일 백준 25593번
def is_fair_schedule(n, schedules):
work_hours = {
'08:00-12:00': 4,
'12:00-18:00': 6,
'18:00-22:00': 4,
'22:00-08:00': 10,
}
total_hours = {}
for week in schedules:
for i, day in enumerate(week):
for worker in day:
if worker != '-':
if worker not in total_hours:
total_hours[worker] = 0
total_hours[worker] += work_hours[list(work_hours.keys())[i]]
if not total_hours:
return "Yes"
hours = list(total_hours.values())
max_hours = max(hours)
min_hours = min(hours)
return "Yes" if (max_hours - min_hours) <= 12 else "No"
# 입력 받기
N = int(input().strip())
schedules = []
for _ in range(N):
week = []
for _ in range(4):
week.append(input().strip().split())
schedules.append(week)
# 결과 출력
print(is_fair_schedule(N, schedules))
푸앙이의 근무표가 공평한지 확인하는 문제에 대해 설명하겠습니다. 주어진 근무표를 통해 각 근무자의 총 근무 시간을 계산하고, 이 시간의 차이가 12시간 이하인지 확인하면 됩니다.
문제 해결 접근법
입력 처리:
첫 번째 줄에서 주의 개수 ( N )을 읽습니다.
이후 ( N \times 4 ) 줄에 대해 근무자를 읽습니다. 각 줄은 해당 시간대에 근무하는 사람의 이름 또는 '-'로 이루어져 있습니다.
근무 시간 계산:
각 시간대에 대해 근무자의 근무 시간을 계산합니다.
08:00~12:00: 4시간
12:00~18:00: 6시간
18:00~22:00: 4시간
22:00~08:00: 10시간
근무자가 '-'인 경우에는 해당 시간대에 근무자가 없음을 의미합니다.
차이 계산:
모든 근무자의 총 근무 시간을 리스트에 저장한 후, 최대 근무 시간과 최소 근무 시간을 계산합니다.
이 두 값의 차이가 12시간 이하인지 확인합니다.
출력:
공평하다면 "Yes", 그렇지 않다면 "No"를 출력합니다.
설명
is_fair_schedule 함수는 주의 개수와 근무표를 입력받아 근무 시간이 공평한지 판단합니다.
각 시간대에 대해 근무하는 사람을 체크하고, 해당 근무 시간만큼 누적합니다.
마지막으로 최대 근무 시간과 최소 근무 시간의 차이를 계산하여 출력합니다.
99클럽 코테 스터디 10일차 TIL + 오늘의 학습 키워드 : 해시 (4) | 2024.11.06 |
---|---|
99클럽 코테 스터디 9일차 TIL + 오늘의 학습 키워드 : 해시 (5) | 2024.11.05 |
99클럽 코테 스터디 7일차 TIL + 오늘의 학습 키워드 : 해시 (2) | 2024.11.03 |
99클럽 코테 스터디 6일차 TIL + 오늘의 학습 키워드 : 해시 (4) | 2024.11.02 |
99클럽 코테 스터디 5일차 TIL + 오늘의 학습 키워드 : 해시 (0) | 2024.11.01 |