문제 › 076

076. 타이머 시스템

Medium 바이브코딩 MCPTimeSystem
문제 설명
[문제] 타이머를 관리하는 MCP 서버를 구현하시오. 실제 시계를 쓰지 않고, 현재 시각 now를 인자로 받아 계산하므로 결과가 결정론적이다(같은 입력이면 항상 같은 출력). 타이머는 만들어질 때의 시각 created_at과 지속 시간 duration(초)을 가진다. 어떤 시점 now에서 남은 시간은 duration에서 흘러간 시간(now - created_at)을 뺀 값이다. [구현할 함수] - create_timer(duration: int, now: int) -> int 지속 시간 duration초짜리 타이머를 만든다. now가 그 타이머의 생성 시각(created_at)이 된다. 새 타이머의 id를 반환한다. id는 0부터 시작해 만들 때마다 1씩 자동 증가한다. - get_remaining(timer_id: int, now: int) -> int 해당 타이머의 now 시점 남은 시간을 반환한다. 남은시간 = duration - (now - created_at). 이미 만료되어 0 이하면 0을 반환한다. 존재하지 않는 id면 -1을 반환한다. - list_timers() -> List[int] 현재 존재하는 모든 타이머 id를 오름차순으로 정렬한 배열로 반환한다. [입력·상태] 서버는 인스턴스 안에 "타이머 id -> {duration, created_at}" 형태의 저장소를 유지한다. 초기 상태는 비어 있다. [제약] - 시각과 지속 시간은 정수다. - get_remaining은 만료 시 0, 없는 id면 -1을 반환한다. [예시] (각 줄은 초기 빈 상태에서 시작) create_timer(10, 1000) -> 0 # 첫 타이머 id는 0 get_remaining(999, 1005) -> -1 # 없는 id list_timers() -> [] # 빈 상태
로그인하고 풀기 AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.