😎풀이

  1. schedules를 인정 시간인 기초 설정 시간 + 10분으로 재정의 한다.
    1-1. 이 때, 그냥 + 10을 하게되면 65분과 같은 시간 설정 오류가 있을 수 있기에 60분을 초과하지 않도록 설정해야한다.
  2. 각 인원별로 순회하며 설정된 출근 시간에 늦지 않았는지 검사한다.
    2-1. 이 때, startday를 기준으로 토요일, 일요일에는 별도의 검사를 진행하지 않는다.
    2-2. 1 ~ 5는 월 ~ 금을 의미하며 6, 7은 토요일 일요일을 의미한다.
  3. 상품을 받게 되는 인원을 반환한다.
function solution(schedules, timelogs, startday) {
    const n = timelogs.length
    let result = n
    // 설정 시간 + 10분까지 정상 출근이므로 재정의
    schedules = schedules.map(schedule => {
        let hour = Math.floor(schedule / 100)
        let min = (schedule % 100) + 10
        // 10분을 더 했을 때 시간이 바뀔 경우 계산
        if(min >= 60) {
            hour++
            min = min % 60
        }
        return hour * 100 + min
    })
    // i: 인원 순회
    for(let i = 0; i < n; i++) {
        let today = startday
        const currentLimit = schedules[i]
        const timelog = timelogs[i]
        // j: 각 출근 시간
        for(let j = 0; j < timelog.length; j++) {
            // 주말 아닌데 지각했으면 대상 제외
            if(timelog[j] > currentLimit && today <= 5) {
                result--
                break
            }
            today = (today % 7) + 1;
        }
    }
    
    return result
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글