상세 컨텐츠

본문 제목

99클럽 코테 스터디 8일차 TIL + 오늘의 학습 키워드 : 해시

본문

728x90
반응형

코테 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 함수는 주의 개수와 근무표를 입력받아 근무 시간이 공평한지 판단합니다.
각 시간대에 대해 근무하는 사람을 체크하고, 해당 근무 시간만큼 누적합니다.
마지막으로 최대 근무 시간과 최소 근무 시간의 차이를 계산하여 출력합니다.

728x90
반응형

관련글 더보기