038. 작업 스케줄러
Hard
바이브코딩
MCPSchedulerSystem
문제 설명
[문제]
할 일(작업)을 우선순위와 마감일로 관리하는 작업 스케줄러 MCP 서버를 구현한다. 작업을 추가하면 자동으로 id가 매겨지고, 가장 처리해야 할 다음 작업을 골라주거나 완료 처리를 할 수 있다.
각 작업은 (id, 이름, 우선순위, 마감일, 완료 여부)를 가진다. 우선순위는 숫자가 클수록 더 급한 것으로 본다. 다음에 처리할 작업은 "아직 완료되지 않은 작업 중 우선순위가 가장 높은(숫자가 가장 큰) 것"이며, 우선순위가 같으면 마감일이 빠른 것을 먼저 고른다.
[구현할 함수]
- add_task(task_name: str, priority: int, due_date: str) -> int
작업을 추가하고 새 task_id 를 반환한다. id는 0부터 시작해 추가될 때마다 1씩 자동 증가한다.
- get_next_task() -> str
미완료 작업 중 다음에 처리할 작업의 이름을 반환한다(우선순위 큰 값 우선, 동률이면 마감일 빠른 순). 미완료 작업이 없으면 빈 문자열("")을 반환한다.
- complete_task(task_id: int) -> bool
해당 id의 작업을 완료 처리한다. 성공하면 참(True), 그런 id가 없으면 거짓(False)을 반환한다.
- get_schedule() -> List[str]
아직 완료되지 않은 작업들의 이름 배열을 반환한다.
[입력·상태]
서버 인스턴스 내부에 작업 리스트(각 작업의 id, name, priority, due_date, done)를 유지한다. 초기 상태는 작업이 없는 빈 상태다. 마감일(due_date)은 "YYYY-MM-DD" 형식 문자열이다.
[제약]
- task_id 는 0부터 자동 증가한다.
- get_next_task 우선순위 규칙: 우선순위 값이 큰 것 우선, 동률이면 마감일이 빠른 것.
- 없는 작업/빈 상태에 대한 호출은 빈 값("", [], False)을 반환한다.
[예시] (각각 초기 빈 상태)
add_task("프로젝트A", 1, "2024-01-01") -> 0 # 첫 작업의 id
get_next_task() -> "" # 작업 없음
complete_task(999) -> False # 그런 id 없음
get_schedule() -> []
로그인하고 풀기
AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.