문제 › 033

033. 로마 숫자 변환기

Medium 바이브코딩 MCPMathConverter
문제 설명
[문제] 아라비아 숫자(우리가 흔히 쓰는 1, 2, 3 같은 십진수)와 로마 숫자(I, V, X 같은 기호로 수를 표기하는 방식)를 서로 변환하는 MCP 서버를 구현한다. 로마 숫자는 다음 7개 기호를 조합해 수를 나타낸다. I=1, V=5, X=10, L=50, C=100, D=500, M=1000 기본적으로 큰 기호부터 왼쪽에 늘어놓아 더하지만(예: XVI = 10+5+1 = 16), 작은 기호가 큰 기호 바로 앞에 오면 빼는 "감산 규칙"이 적용된다. IV=4, IX=9, XL=40, XC=90, CD=400, CM=900 예를 들어 1994는 M(1000) + CM(900) + XC(90) + IV(4) = MCMXCIV 가 된다. [구현할 함수] - to_roman(arabic: int) -> str 1 이상 3999 이하의 정수를 로마 숫자 문자열로 변환해 반환한다. - from_roman(roman: str) -> int 로마 숫자 문자열을 정수로 변환해 반환한다. (감산 규칙 포함) [입력·상태] 별도로 유지하는 상태는 없다. 각 함수는 인자만으로 결과를 계산한다. [제약] - to_roman 의 입력 arabic 은 1~3999 범위의 정수다. - from_roman 의 입력 roman 은 위 7개 기호로 이루어진 유효한 로마 숫자 문자열이다. - 감산 규칙(IV, IX, XL, XC, CD, CM)을 반드시 처리한다. [예시] to_roman(1994) -> "MCMXCIV" to_roman(2023) -> "MMXXIII" from_roman("MCMXCIV") -> 1994
로그인하고 풀기 AI가 자동 채점하고 즉시 정답·해설을 알려줘요. 무료.