Dayoffly 글로벌
계산 알고리즘

연차 최적화 계산 방식

공휴일과 근무일을 분석해 효율적인 휴가 일정을 계산하는 방법입니다.

1날짜별 상태 분류

국가·연도별로 전년도 12월 15일부터 다음 해 1월 15일까지 날짜를 확장하고 각 날짜의 유형을 분류합니다:

공휴일: 법정 전국 공휴일 또는 적용되는 지역 공휴일
주말: 해당 국가의 근무 요일이 아닌 날 (예: 토·일 또는 금·토)
근무일: 일반 근무 일정에 해당하는 날
지정 휴무: 회사에서 정한 휴무일

2누적합·구간 분석

날짜 구간 분석의 연산량을 줄이기 위해 근무일의 누적합 배열을 만듭니다:

P[k] = 0일부터 k-1일까지의 근무일 합계

후보 휴가 구간 [i, j]에 필요한 연차는 다음 식으로 O(1)에 계산할 수 있습니다:

필요 연차(i, j) = P[j+1] - P[i], 총 일수(i, j) = j - i + 1

3최대 구간·파레토 우위

중복된 하위 구간을 줄이기 위해 다음 두 가지 규칙을 적용합니다:

  • 최대 구간 규칙: 휴가의 시작 전과 종료 후가 근무일이 되도록 구간을 확장합니다. 추가 연차 없이 주말이나 공휴일을 더 포함할 수 있다면 작은 구간은 제외합니다.
  • 파레토 우위 규칙: 휴가 A가 B를 완전히 포함하면서 같은 수 이하의 연차로 같은 수 이상의 휴가 일수를 제공하면 B를 결과에서 제외합니다.

4연차 효율

휴가 일정의 연차 효율은 다음과 같이 정의합니다:

연차 효율 = 총 연속 휴가 일수 / 사용 연차 일수

연차를 사용하지 않으면 비율을 유한한 값으로 표시할 수 없으므로 다음과 같이 안내합니다: "연차 사용 없음" 무한대 수치로 표시하지 않습니다.