Coolog 🖥️

/

[Coding Test] 유연근무제 ⭐


🐳2025 프로그래머스 코드챌린지 1차 예선 유연근무제 ⭐ 코딩 테스트 문제를 풀고 정리한 글입니다 🐳

💫 문제 설명

매개변수

  • n : 직원 수
  • schedules : n 명이 설정한 출근 희망 시각을 담은 1차원 정수 배열
    • 1 ≤ schedules의 길이 = n ≤ 1,000
      • schedules[i]는 i + 1번째 직원이 설정한 출근 희망 시각을 의미합니다.
      • 700 ≤ schedules[i] ≤ 1100
  • timelogs : 직원들이 일주일 동안 출근한 시각을 담은 2차원 정수 배열
    • 1 ≤ timelogs의 길이 = n ≤ 1,000
      • timelogs[i]의 길이 = 7
      • timelogs[i][j]는 i + 1번째 직원이 이벤트 j + 1일차에 출근한 시각을 의미합니다.
      • 600 ≤ timelogs[i][j] ≤ 2359
  • startday : 이벤트를 시작한 요일을 의미하는 정수
    • 1 ≤ startday ≤ 7
      • 1은 월요일, 2는 화요일, 3은 수요일, 4는 목요일, 5는 금요일, 6은 토요일, 7은 일요일에 이벤트를 시작했음을 의미합니다.
  • 출근 희망 시각과 실제로 출근한 시각을 100으로 나눈 나머지는 59 이하입니다.

상품을 받을 직원의 수를 return 하도록 solution 함수를 완성


  • 직원들은 일주일동안 자신이 설정한 출근 희망 시각 + 10분까지 어플로 출근해야 합니다. 예를 들어 출근 희망 시각이 9시 58분인 직원은 10시 8분까지 출근해야 합니다.
  • 단, 토요일, 일요일의 출근 시각은 이벤트에 영향을 끼치지 않습니다. 직원들은 매일 한 번씩만 어플로 출근하고, 모든 시각은 시에 100을 곱하고 분을 더한 정수로 표현됩니다. 예를 들어 10시 13분은 1013이 되고 9시 58분은 958이 됩니다.

입출력 예

schedules timelogs startday result
[700, 800, 1100] [[710, 2359, 1050, 700, 650, 631, 659], [800, 801, 805, 800, 759, 810, 809], [1105, 1001, 1002, 600, 1059, 1001, 1100]] 5 3

이벤트를 시작한 날은 금요일입니다. 직원 3명의 일주일 간 출근 시각을 나타내면 다음과 같습니다.

출근 희망 시각 출근 인정 시각
7:00 7:10
8:00 8:10
11:00 11:10
7:10 23:59 10:50 7:00 6:50 6:31 6:59
8:00 8:01 8:05 8:00 7:59 8:10 8:09
11:05 10:01 10:02 6:00 10:59 10:01 11:00

모든 직원이 평일에 늦지 않고 출근했습니다. 따라서 상품을 받을 직원은 3명입니다.

💫 코드

def solution(schedules, timelogs, startday):
    time = schedules
    arr = [0 for i in range(len(time))]

    for i in range(len(time)):
        n = time[i]
        hour = n // 100
        min = n-(hour * 100) + 10
        if min >= 60:
            hour+=1
            min-= 60
        if hour >= 24:
            hour -= 24
        time[i] = (hour * 100) + min

    for i in range(len(time)):
        for j in  range(len(timelogs[i])):
            day = startday + j
            if startday + j > 7:
                day -= 7
            #평일인경우
            if day <= 5:
                if timelogs[i][j] > time[i]:
                    arr[i] = 1

    a = arr.count(1)
    answer = len(time) - a
    return answer

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최근 게시물