문제 › 093

093. 상태 머신

Hard 바이브코딩 MCPStateMachineSystem
문제 설명
[문제] 상태 머신(state machine) MCP 서버를 구현한다. 상태 머신은 "현재 상태"가 하나 있고, 특정 "이벤트(event)"가 들어오면 정해진 다른 상태로 옮겨가는(전이, transition) 모델이다. 예를 들어 idle(대기) 상태에서 start 이벤트를 받으면 running(실행) 상태로 바뀌는 식이다. 서버는 상태들의 집합, 전이 규칙, 그리고 현재 상태를 보관한다. [구현할 함수] - define_state(state_name: str) -> int 새 상태를 정의한다. 가장 처음 정의된 상태는 자동으로 현재 상태(current_state)가 된다. 정의 후 전체 상태 수를 반환한다. - add_transition(from_state: str, to_state: str, event: str) -> bool from_state에서 event가 들어오면 to_state로 가는 전이 규칙을 추가한다. 두 상태가 모두 정의되어 있으면 추가하고 True, 하나라도 정의되지 않았으면 False를 반환한다. - trigger_event(event: str) -> str 현재 상태에서 event에 해당하는 전이를 수행한다. 전이에 성공하면 새 상태 이름을 반환하고 현재 상태를 갱신한다. 해당 전이가 없으면 빈 문자열 ""을 반환한다. - get_current_state() -> str 현재 상태 이름을 반환한다. 아직 상태가 없으면 빈 문자열 ""을 반환한다. [입력·상태] 서버는 상태 집합, 전이 규칙들, 현재 상태를 유지한다. 초기에는 모두 비어 있다. [제약] - 상태 이름과 이벤트는 문자열이다. - 정의되지 않은 상태로의 전이 규칙은 추가되지 않는다(False). [예시] (각 예시는 초기 빈 상태에서 시작) define_state("idle") -> 1 get_current_state() -> "idle" # 첫 상태가 현재 상태 define_state("idle"); define_state("running") # -> 1, 2 add_transition("idle", "running", "start") -> True trigger_event("start") -> "running" (초기 빈 상태에서) add_transition("a", "b", "e") -> False # 상태 미정의 trigger_event("e") -> "" get_current_state() -> ""
로그인하고 풀기 AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.