반응형


문제 이해
유연 근무제 적응을 위해 자신이 정한 출근 희망 시간 schedules[i] 에 일주일동안 제시간 + 10분에 온다면 포상을 주려고 한다.( 토요일과 일요일 제외)
이 때 포상을 받는 수는??
제한 사항을 보니 시간도 넉넉할 것 같고, 간단한 구현문제 인것 같다.
나같은 경우 이런 문제가 나왔을 때 깔끔히 풀기 보다 함수로 나눠서 빨리 빨리 푸는 편이다.
일단 제한 사항을 보니
24시가 넘어 00시가 되는 부분은 구현해도 되지 않으니 쉽게 구현하면 될 것 같다.
1. 토요일 일요일을 제외하는 함수
2. 제시간에 왔는지 안왔는지 체크하는 함수
3. 일주일 동안 모두 제시간에 왔는지 체크하는 함수 (코드를 보면 알겠지만 Main함수에서 그냥 구현해서 사용했다.)
코드
class Solution {
int NoDay1;
int NoDay2;
public int solution(int[] schedules, int[][] timelogs, int startday) {
int answer = 0;
NoDay(startday);
int len = schedules.length;
for(int i =0; i< len; i++){
int time = schedules[i];
int ans = 0;
for(int j = 0; j <7 ; j++){
if(j == NoDay1) continue;
if(j == NoDay2) continue;
if(isSafe(time, timelogs[i][j])) ans++;
}
if(ans == 5) answer++;
}
return answer;
}
public void NoDay(int startday){
if(startday == 1){NoDay1 = 5; NoDay2 = 6;}
if(startday == 2){NoDay1 = 4; NoDay2 = 5;}
if(startday == 3){NoDay1 = 3; NoDay2 = 4;}
if(startday == 4){NoDay1 = 2; NoDay2 = 3;}
if(startday == 5){NoDay1 = 1; NoDay2 = 2;}
if(startday == 6){NoDay1 = 0; NoDay2 = 1;}
if(startday == 7){NoDay1 = 6; NoDay2 = 0;}
}
public boolean isSafe(int time, int safe){
int hour = time / 100;
int min = time % 100;
int safeHour = safe / 100;
int safeMin = safe % 100;
if(min + 10 >= 60) {
hour++;
min -= 50;
}else{
min += 10;
}
if(safeHour > hour){
return false;
}else{
if(safeHour == hour){
if(safeMin > min){
return false;
}else{
return true;
}
}else{
return true;
}
}
}
}
반응형
'알고리즘' 카테고리의 다른 글
| [프로그래머스] 음양 더하기 (0) | 2025.09.17 |
|---|---|
| [프로그래머스] 달리기 경주 - 자바(JAVA) (0) | 2025.09.09 |
| [PCCP 모의고사 2회] 4번 보물지도 - 자바(java) (2) | 2025.08.14 |
| [PCCP 모의고사 2회] 3번 카페 확장 - 자바(java) (1) | 2025.08.14 |
| [PCCP 모의고사 2회] 2번 신입사원 교육 - 자바(java) (2) | 2025.08.14 |