유연근무제

이리·2025년 2월 10일
0

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

문제설명

  • 주어진 파라미터: Int[] schedules, int[][] timelogs, int startday
    • schedules: 출근 희망시간 1차원 정수 배열
    • timelogs: 일주일 동안 출근한 시각을 담은 2차원 배열
    • startday: 이벤트를 시작한 요일 (1-7)
  • 반환값: int
  • 출근 희망시간에 늦지 않고 출근한 직원들에게 주는 이벤트 진행
  • 출근희망시간 + 10분까지(토,일 제외)
  • 매일 한번씩 출근 도장, 시 * 100 + 분으로 표현
  • 상품을 받을 직원이 몇명인지 return

풀이방식

  1. 시간 체크 방식 → 분으로 통일해서 체크
  2. 토, 일요일의 경우 패스 → startday로 생각

코드

class Solution {
    public int solution(int[] schedules, int[][] timelogs, int startday) {
        int answer = 0;
        
        for(int i = 0 ; i < schedules.length; i++){
            int target = (schedules[i] / 100) * 60 + (schedules[i] % 100);
            boolean check = true;
            
            for(int j = 0; j < 7 ; j++){
                // 토, 일 무시 
                if(startday == 7 && (j == 0 || j == 6)){
                    continue;
                }else if(j == 6 - startday || j == 7 - startday){
                    continue;
                }else{
                    int work = (timelogs[i][j] / 100) * 60 + (timelogs[i][j] % 100);
                    if(target + 10 < work){
                        //System.out.println(timelogs[i][j]);
                        check = false;
                        break;
                    }
                }
            }
            
            if(check){
                System.out.println(i);
                answer++;
                check = true;
            }
        }
        
        return answer;
    }
}
```![](https://velog.velcdn.com/images/illli_705/post/83a05d3a-055d-4824-8574-16b24919e673/image.png)

0개의 댓글

관련 채용 정보