문제
유효한 로마 숫자를 그 값으로 변환하세요. 기호는 I=1, V=5, X=10, L=50, C=100, D=500, M=1000입니다. 더 작은 기호가 더 큰 기호 앞에 오면 뺄셈으로 계산합니다 (예: IV = 4, CM = 900).
roman_to_int(text)를 구현하세요.
입력
text: 유효한 로마 숫자 문자열입니다.
출력
그 값을 반환하세요.
제약 조건
1 ≤ 값 ≤ 3,999
예시
예시 1
입력:
text = "XIV"
예상 출력:
expected = 14
입력:
std::string text = "XIV";
예상 출력:
long long expected = 14;
입력:
string text = "XIV";
예상 출력:
long expected = 14;
설명
X = 10, IV = 4: 14.
예시 2
입력:
text = "MCMXCIV"
예상 출력:
expected = 1994
입력:
std::string text = "MCMXCIV";
예상 출력:
long long expected = 1994;
입력:
string text = "MCMXCIV";
예상 출력:
long expected = 1994;
설명
M=1000, CM=900, XC=90, IV=4: 1994.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
대부분은 값을 더하지만, 작은 기호가 큰 기호 앞에 오면 일부는 빼야 합니다.
힌트 2
로마 숫자를 왼쪽에서 오른쪽으로 읽고 각 기호를 다음 기호와 비교하세요.
힌트 3
마지막 기호는 뒤에 오는 문자가 없으므로 반드시 따로 처리하세요.
예상 복잡도
시간 O(n), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.