[프로그래머스] 유연근무제 [Java]

2026. 3. 5. 09:36PS 풀이

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

요약

  • 직원 N명의 일주일 간의 출근 희망 시각과 실제 출근 시각이 주어졌을 때, 평일 간 지각하지 않은 사람의 수를 구하자.
  • 지각 기준: 출근 희망 시간 + 10분 초과

풀이 과정

아이디어

3, 4자리의 정수로 변환된 시각을 비교하며 조건을 만족하는 직원의 수를 구해야 한다.

지각 기준이 출근 희망 시각 + 10분 이므로 다음과 같이 비교 대상 시각(max)을 미리 구해두자.

출근 희망 시각의 분(m)이 49분을 초과할 경우 10분을 더한 시간이 올바른 시각을 표현하도록 계산해야 한다.

for (int i = 0; i < schedules.length; ++i) {
    final int m = schedules[i] % 100;
    final int max = m <= 49 ? 
    	schedules[i] + 10 : schedules[i] - m + 100 + (m + 10) % 60;

이후에는 평일 중 실제 출근 시각과 비교해주며 지각을 안한 직원의 수를 세면 된다.

    int day = startday;
    boolean lazy = false;
    for (int t = 0; t < 7; ++t) {
        if (day < 6 && timelogs[i][t] > max) {
            lazy = true;
        }
        day = (day % 7) + 1;
    }
    if (!lazy) ++answer;
}

성능 분석

  • 시간 복잡도: $O(N^2)$
  • 제출결과: Accepted

참고

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/Programmers/2025%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%20%EC%BD%94%EB%93%9C%EC%B1%8C%EB%A6%B0%EC%A7%80%201%EC%B0%A8%20%EC%98%88%EC%84%A0/%EC%9C%A0%EC%97%B0%EA%B7%BC%EB%AC%B4%EC%A0%9C.java

 

problem-solving/Programmers/2025 프로그래머스 코드챌린지 1차 예선/유연근무제.java at main · rogi-rogi/proble

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com