상세 컨텐츠

본문 제목

[프로그래머스] 388351. 유연근무제 | Python3, Level1, 단순 구현

Coding Test/문제풀이

by yooputer 2025. 4. 14. 16:55

본문

 

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 요약

1. 일주일동안 출근 희망 시간 + 10분 이내 출근하면 선물을 주는 이벤트를 진행한다. 

2. 이벤트는 startday부터 시작이고, 주말에는 이벤트에 영향을 끼치않는다. 

3. 선물을 받는 직원 수를 구해라. 

schedules[i] = i번째 직원의 출근 희망 시간
1 ≤ schedules의 길이 ≤ 1,000
700 ≤ schedules[i] ≤ 1100

timelogs[i][j] = i번째 직원의 j일차 출근 시간
timelogs[i]의 길이 = 7
1 ≤ timelogs의 길이 ≤ 1,000
600 ≤ timelogs[i][j] ≤ 2359

startday = 이벤트 시작일
1 ≤ startday ≤ 7
1은 월요일, 2는 화요일, ...

시간 = h * 100 + m

해결 프로세스

1. 직원별로 선물을 받을 수 있는지 확인한다. 

2. 선물을 받을 수 있는 조건 = 모든 날이 아래 조건을 만족할 때

👉 주말이거나 출근시간 <= 출근희망시간 + 10분


정답 소스코드

def solution(schedules, timelogs, startDay):
    return sum(check(goal, log, startDay) for goal, log in zip(schedules, timelogs))

def check(goal, timelog, startDay):
    targetTime = add10Minutes(goal)

    for d in range(7):
        today = (startDay + d) % 7 
        if today in [6, 0]:  # 주말 스킵
            continue

        if timelog[d] > targetTime:
            return False

    return True

def add10Minutes(time):
    hour, minute = divmod(time, 100)
    minute += 10

    if minute >= 60:
        hour += 1
        minute -= 60

    return hour * 100 + minute

관련글 더보기