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