https://school.programmers.co.kr/learn/courses/30/lessons/388351
직원 n명의 희망 출근 시간이 담긴 schedules
직원들의 일주일 출근 시간 내역 2차원 배열 timelogs
시작한 요일 startday (월, 화, 수, 목, 금, 토, 일 == 1, 2, 3, 4, 5, 6, 7)
유저 수 n 만큼 반복해야 함
직원 별로 타임 로그를 순회 해야 함
주말에는 지각 안잡으니 주말은 봐줘야 함
현재 요일을 체크해서 7(일요일)이라면 다음날에는 1(월요일) 부터 시작되게 조건문 줘야함
순회를 끝냈을 때 지각이 없었다면 count + 1
유저별 순회 종료 후 count 값 리턴
def solution(schedules, timelogs, startday):
n = len(schedules)
cont = 0
for i in range(n):
# 현재 직원 출근 희망 시간
WSTime = schedules[i]
# 출근 인정 시간(+10)
PSTime = WSTime + 10
# 성공실패
SS = True
day = startday
for j in timelogs[i]:
# 평일일때만 진행
if 1 <= day <= 5:
if j >PSTime:ㅁ
SS = False
break
# 일주일 지나갔나 체크
if day == 7:
day = 1
else:
day += 1
if SS:
cont += 1
return cont
# 시각 변환식: h시 m분 = h * 100 + m
def solution(schedules, timelogs, startday):
def convert_time(time):
h, m = divmod(time, 100)
m += 10
if m >= 60:
h += 1
m -= 60
return h * 100 + m # 올바른 출근 인정 시간 변환
n = len(schedules)
cont = 0 # 상품을 받을 직원 수
for i in range(n):
WSTime = schedules[i] # 희망 출근 시간
PSTime = convert_time(WSTime) # 출근 인정 시간 변환
is_success = True
day = startday
weekday_count = 0 # 평일 출근 횟수 카운트
for j in timelogs[i]:
if 1 <= day <= 5: # 평일만 체크
weekday_count += 1
if j > PSTime: # 지각한 경우
is_success = False
break
day = 1 if day == 7 else day + 1 # 요일 업데이트
if weekday_count == 5: # 평일 5일 확인 후 중단
break
if weekday_count < 5: # 출근 기록이 부족하면 실패 처리
is_success = False
if is_success:
cont += 1
return cont