2025 프로그래머스 코드챌린지 1차 예선 - 유연근무제 -JAVA

2025. 2. 27. 15:31백준 및 프로그래머스/프로그래머스 LV 1

문제 설명

제한 사항

테스트 케이스 구성 안내

입출력 예시

입출력 예시 1)

입출력 예시 2)

문제 핵심

-단순 구현 문제입니다. 실제로 출근 예정에 + 10을 더해준 후 지각을 했는 지 안했는 지 판단해주면 됩니다.

-주말은 지각을 해도 상관없습니다.

-지각을 안했으면 COUNT++ 횟수를 세어줍니다.

-지각을 한번도 안했으면 COUNT가 7이 나옵니다. 

-7이 나오면 이 사람은 상품을 받을 수 있습니다.

 

전체 코드

import java.util.*;
import java.lang.*;
class Solution {
    public int solution(int[] schedules, int[][] timelogs, int startday) {
        int answer = 0;
        int count = 0 ;
        startday -=1;
        //요일 설정 
        List<Integer> list = new ArrayList<>();
        for(int i = 1; i<=7; i++){
            list.add(i);
        }
    
        
        //로직
        int n = schedules.length;
        int m = timelogs.length;
        for(int i = 0; i<n; i++){
            int time = schedules[i] + 10;
            int day = startday;
            if(time % 100 >= 60){
                time+=100;
                time-=60;
            }
            count = 0 ; 
            for(int j = 0; j<7; j++){
                if(list.get(day) == 6 || list.get(day) == 7){
                    count++;
                }else{
                    if(time>=timelogs[i][j]){
                        count++;
                    }
                }
                day = (day+1) % 7;
                
            }
            if(count == 7){
                answer++;
            }
        }
        return answer;
    }
}

*출근 희망 시간과 실제로 출근 시간은 100으로 나눈 59이하입니다. 이 부분이 핵심입니다. 이 부분을 잘 숙지 못해서 문제 푸는 시간이 오래 걸렸습니다.