100. 간단 워크플로우 엔진
Hard
바이브코딩
MCPWorkflowSystem
문제 설명
[문제]
간단한 워크플로우 엔진 MCP 서버를 구현한다. 워크플로우란 정해진 단계(step)들을 순서대로 진행하는 작업 흐름이다. 예를 들어 워크플로우 "w"를 단계 ["a", "b"]로 정의해 두고, 시작(start)한 뒤 한 단계씩 전진(advance)시키며 현재 위치를 추적한다.
서버는 워크플로우 정의(이름 -> 단계 목록)와 각 워크플로우의 진행 상태(현재 단계 인덱스)를 유지한다. 인덱스는 0부터 시작한다. 서버 시작 시 정의·진행 상태 모두 비어 있다.
[구현할 함수]
- define_workflow(workflow_name: str, steps: 문자열 배열) -> int
워크플로우를 단계 목록과 함께 정의한다. 정의 후 전체 워크플로우 개수를 반환한다.
- start_workflow(workflow_name: str) -> bool
워크플로우를 시작하여 현재 단계를 첫 단계(인덱스 0)로 둔다. 정의가 있으면 True, 없으면 False.
- advance_step(workflow_name: str) -> int
현재 단계에서 다음 단계로 전진하고, 이동한 다음 단계의 인덱스를 반환한다. 더 이상 다음 단계가 없어 끝까지 진행되면 -1을 반환한다. 시작되지 않았거나 정의가 없으면 -1.
- get_status(workflow_name: str) -> int
현재 단계 인덱스를 반환한다. 아직 시작되지 않았거나 정의가 없으면 -1. 모든 단계를 마쳐 완료된 상태면 단계 개수(즉 마지막 인덱스+1)를 반환한다.
[입력·상태]
워크플로우 이름은 문자열, steps는 단계 이름 문자열의 배열이다. 정의·진행 상태는 호출 간에 유지된다.
[제약]
- 존재하지 않는 워크플로우에 대한 start_workflow·advance_step·get_status는 각각 False·-1·-1을 반환한다.
- 시작 직후 현재 인덱스는 0이며, advance_step을 한 번 호출하면 1이 된다.
[예시]
define_workflow("w", ["a", "b"]), start_workflow("w") -> true
define_workflow("w", ["a", "b"]), start_workflow("w"), advance_step("w") -> 1
(빈 상태) start_workflow("없음") -> false
(빈 상태) advance_step("없음") -> -1
(빈 상태) get_status("없음") -> -1
로그인하고 풀기
AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.