도구스학업·수학

주공정법(CPM) 일정 계산기

작업의 소요 기간과 선행 관계를 넣으면 전체 공기와 작업별 ES·EF·LS·LF, 여유시간을 계산하고 여유가 0인 주공정을 짚어 줍니다. PERT 3점 추정과 순환 검출도 함께 다룹니다.

한 줄에 「이름 기간 [선행작업…]」. 선행작업이 없으면 비웁니다. 40개까지.

작업 7개 · 전체 공기

28

주공정은 설계 → 발주 → 납품 → 조립 → 검수입니다. 여유시간이 0인 작업이 5개이고, 그중 하나라도 하루 늦으면 전체가 하루 늦습니다.

전체 공기28
주공정설계 → 발주 → 납품 → 조립 → 검수
여유가 0인 작업5개 / 7개

작업별 일정

작업기간ESEFLSLF여유
설계505050
발주358580
납품108188180
터파기4598123
기초691512183
조립8182618260
검수2262826280

ES·EF는 앞으로 계산한 값(선행이 모두 끝나야 시작하므로 선행들의 EF 중 최댓값), LS·LF는 뒤로 계산한 값(전체 공기를 지키려면 늦어도 언제까지 끝나야 하는가)입니다. 두 값의 차이가 여유시간이고, 파란 줄이 여유 0인 주공정입니다.

총 여유와 자유 여유

작업총 여유자유 여유
터파기30
기초33

총 여유는 전체 공기를 늦추지 않고 미룰 수 있는 기간이고, 자유 여유는 후행 작업의 시작까지도 늦추지 않고 미룰 수 있는 기간입니다. 총 여유를 다 쓰면 전체는 그대로지만 뒤에 오는 작업이 밀립니다 — 여러 작업이 같은 여유를 나눠 쓰고 있어 한쪽이 다 쓰면 다른 쪽이 못 씁니다.

여유시간이 0인 작업들이 곧 주공정입니다. 하루도 못 미룬다는 뜻이고, 그 작업이 하루 늦으면 전체가 하루 늦습니다. 반대로 여유가 있는 작업은 아무리 서둘러 끝내도 전체 공기가 줄지 않습니다 — 일정을 줄이려면 주공정 위의 작업부터 손대야 합니다. 자원을 어디에 더 넣을지 정하는 자리가 바로 여기입니다.
dev/topological-sort는 「어떤 순서로 해야 하는가」와 단계 수만 보고 소요 기간을 다루지 않습니다. 단계 수가 같아도 기간이 다르면 주공정이 달라지므로 다른 계산입니다. 이 도구는 순환이 있으면 계산하지 않고 어느 작업이 얽혔는지 먼저 알려 줍니다 — 서로를 기다리면 일정 자체가 성립하지 않기 때문입니다.

계산 방법

  1. 1작업을 한 줄에 하나씩 「이름 기간 선행작업들」 형식으로 적습니다.
  2. 2선행작업이 없는 작업은 이름과 기간만 적습니다.
  3. 3전체 공기와 주공정을 확인합니다.
  4. 4작업별 표에서 여유시간이 0인 줄을 봅니다.
  5. 5기간이 불확실하면 3점 추정으로 바꿔 낙관·최빈·비관을 넣습니다.

자주 묻는 질문

여유시간이 0인 작업들을 이은 사슬로, 시작에서 끝까지의 가장 긴 경로입니다. 이 위의 작업이 하루 늦으면 전체가 하루 늦고, 반대로 여유가 있는 작업은 아무리 서둘러도 전체 공기가 줄지 않습니다. 일정을 줄이려면 주공정부터 손대야 합니다.

앞으로 한 번, 뒤로 한 번 계산합니다. 앞으로 갈 때는 선행 작업이 모두 끝나야 시작하므로 ES = 선행들의 EF 중 최댓값, EF = ES + 기간입니다. 전체 공기는 모든 EF의 최댓값입니다. 뒤로 갈 때는 LF = 후행들의 LS 중 최솟값(후행이 없으면 전체 공기), LS = LF − 기간입니다.

LS − ES 또는 LF − EF입니다. 두 값은 언제나 같습니다. 이 값이 0이면 하루도 못 미룬다는 뜻이고, 3이면 전체 공기를 늦추지 않고 사흘까지 미룰 수 있다는 뜻입니다.

총 여유는 전체 공기를 늦추지 않고 미룰 수 있는 기간이고, 자유 여유는 후행 작업의 시작까지도 늦추지 않고 미룰 수 있는 기간입니다. 총 여유를 다 쓰면 전체는 그대로지만 뒤에 오는 작업이 밀립니다 — 여러 작업이 같은 여유를 나눠 쓰고 있어 한쪽이 다 쓰면 다른 쪽이 못 씁니다.

기간이 불확실할 때 낙관·최빈·비관 세 값을 받아 기대 기간을 (낙관 + 4×최빈 + 비관) ÷ 6으로, 표준편차를 (비관 − 낙관) ÷ 6으로 쓰는 방법입니다. 베타분포를 가정한 관행적인 어림이지 유도된 식은 아니라는 점을 감안해야 합니다.

일정이 성립하지 않습니다. A가 B를 기다리고 B가 A를 기다리면 어느 것도 시작할 수 없기 때문입니다. 이 도구는 계산을 시도하기 전에 순환을 먼저 잡아 어느 작업이 얽혔는지 알려 줍니다.

위상 정렬은 「어떤 순서로 해야 하는가」와 단계 수만 보고 소요 기간을 다루지 않습니다. 단계 수가 같아도 각 작업의 기간이 다르면 주공정이 달라지므로 다른 계산입니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 정답지는 모든 경로를 훑어 보는 것입니다. 전방·후방 계산을 전혀 쓰지 않고 시작 작업에서 끝 작업까지의 경로를 하나씩 밟아 기간을 더해, 가장 긴 경로의 길이가 전체 공기와 같고 그 경로가 주공정과 같은지 여섯 가지 일정에서 확인했습니다.
  • 여유시간의 뜻 자체를 검사합니다. 여유가 0인 작업을 하루 늘리면 전체 공기가 정확히 하루 늘어나야 하고, 여유가 있는 작업은 그 여유만큼 늘려도 전체가 그대로여야 하며 하루 더 늘리면 늘어나야 합니다. 세 가지를 모두 일정마다 다시 계산해 확인했습니다.
  • ES + 기간 = EF, LS + 기간 = LF, LS − ES = LF − EF, 여유 ≥ 0, 자유 여유 ≤ 총 여유가 모든 작업에서 성립하는지도 함께 고정했습니다.
  • 선행 작업이 끝나기 전에 시작하는 작업이 없는지도 검사합니다. 계산이 맞더라도 이 조건이 깨지면 일정으로서 뜻이 없습니다.
  • 순환과 「없는 선행작업」을 뭉뚱그리지 않고 이유를 나눠 답합니다. 앞은 일정 자체가 성립하지 않는 것이고 뒤는 이름을 잘못 적은 것이라 고칠 곳이 다릅니다.
  • PERT는 기대 기간 (o + 4m + p) ÷ 6과 주공정 위 분산의 합으로 표준편차를 냅니다. 주공정이 아닌 작업의 불확실성은 반영되지 않는 한계가 있어 화면에 밝혀 두었습니다.
  • 작업은 40개까지 다룹니다. 표를 통째로 그리는 것이 목적이라 그보다 많으면 화면이 읽히지 않습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.