088. 포인트 적립 시스템
Medium
바이브코딩
MCPLoyaltySystem
문제 설명
[문제]
포인트 적립 시스템 MCP 서버를 구현한다.
사용자의 보유 포인트를 늘리거나(적립) 쓰고(사용), 현재 잔액을 조회하고, 지금까지의 변동 이력을 보여준다. 포인트를 쓸 때 잔액이 부족하면 거래가 거절된다.
[구현할 함수]
- earn_points(points: int) -> int
points만큼 적립한다. 적립 후 보유 포인트를 반환한다. 이력에 적립 기록을 남긴다.
- use_points(points: int) -> int
points만큼 사용한다. 잔액이 부족하면 거래를 거절하고 -1을 반환한다(보유는 그대로). 성공하면 사용 후 보유 포인트를 반환하고 이력에 사용 기록을 남긴다.
- get_points() -> int
현재 보유 포인트를 반환한다.
- get_history() -> array<string>
포인트 변동 이력 배열을 반환한다(예: ["적립 100", "사용 50"]). 비어 있으면 빈 배열 []을 반환한다.
[입력·상태]
서버는 보유 포인트와 변동 이력을 유지한다. 초기 보유는 0이고 이력은 비어 있다.
[제약]
- points는 정수이다.
- 잔액보다 큰 금액을 사용하려 하면 use_points는 -1을 반환하고 상태를 바꾸지 않는다.
[예시] (각 예시는 초기 0 상태에서 시작)
earn_points(100) -> 100
get_points() -> 100
earn_points(100)
use_points(30) -> 70 # 100 - 30
get_points() -> 70
earn_points(100)
use_points(200) -> -1 # 잔액 부족, 거절
use_points(50) -> -1 # 초기 0 상태에서는 부족
get_points() -> 0
get_history() -> [] # 초기 상태
로그인하고 풀기
AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.