프로그래머스 1단계

프로그래머스 코테 연습 [유연근무제]

dev-lee 2026. 2. 27. 23:48

다 하고 보면 간단한 문제였지만 인덱스를 어떻게 맞춰야 하는지, 비교는 어떤 방식으로 할지, 조건문은 어떻게 써야 깔끔할지 생각하는 것이 어려운 문제였다.

class Solution {
    public int solution(int[] schedules, int[][] timelogs, int startday) {
        // 배열이 0~6으로 인덱싱되어 있지만 startday만 1~7로 되어있기 때문에 맞춰줘야함
        startday--; 
int limit = 0;
int reward = schedules.length;
for(int i = 0; i < schedules.length; i++) {
//litmit은 출근해야하는 시간. 50분이 넘어가면 +10분을 해서 limit을 정했을 시 60분이 넘어가기때문에
//시간이 넘어가니 +100을 해주고 다시 시간을 맞추기 위해 -60, limit을 맞추기 위해 +10을 해줌.
limit = schedules[i]%100 + 10 >= 60 ? schedules[i]+50 : schedules[i]+10;

for(int j = 0; j < 7; j++) {
// 토요일, 일요일은 비교 자체를 하지 않을 것인데, %7로 배열 인덱스를 넘어가더라도 배열 안에서 돌게 만들고 토요일, 일요일 걸러냄
if((j + startday)%7 == 5 || (j + startday)%7 == 6 ) {
continue;
} else {
// 출근시간과 허용시간을 비교해서 지각이면 상을 받지 못하게 하고 반복문을 빠져나간다.
if(timelogs[i][j] > limit) {
reward--;
break;
}
}
}
}
return reward;
        
    }
}