본문 바로가기

MY스터디

[스터디] 알고리즘#3 - 유연근무제

몇개 푼것중에 제일 쉬운문제!! 역시 글자가 많다고 두려워 하지 말자 ㅋ

 

문제가 하도 길어서, 풀기도 전에 겁이 났는데, 이번 문제는 난이도가 제일 낮은 문제같긴하네..

포인트는 60진법(시간)에 대한 처리를 적절히 하는것!

이건 그냥 문제만 잘읽어도 풀리는 문제긴하다~

 

직원들이 출근 계획 시간표를 제출하고, 해당 출근 계획 시간 + 10분까지 계획대로 출근을 일주일간

모두 한 직원들의 수를 구하는 문제이다! 

(15분정도 걸린듯)

 

https://school.programmers.co.kr/learn/courses/30/lessons/388351

 

class Solution {
    fun solution(schedules: IntArray, timelogs: Array<IntArray>, startday: Int): Int {
        var answer: Int = 0
        schedules.forEachIndexed { index, schedule ->
            var day = startday
            var cnt = 0
            val hour = schedule / 100
            val minute = schedule % 100
            val s1 = hour * 100 + minute

            val hourA = (hour + (minute + 10) / 60)
            val minuteA = (minute + 10) % 60
            val s2 = hourA * 100 + minuteA

            println("$s1 ~ $s2")

            timelogs[index].forEach { timelog ->
                if (day == 8) {
                    day = 1
                }

                if (timelog <= s2) {
                    if (day !in 6..7) {
                        cnt++
                        println(" = > $timelog")
                        if (cnt == 5) answer++
                    }
                }
                day++
            }
        }

        println("answer = $answer")
        return answer
    }
}