문제 › 100

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가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.