쉬움 0명 해결 정답률 0%

로마 숫자 값

로마 숫자를 숫자로 변환하세요.

배우게 될 내용

  • 딕셔너리로 기호를 값에 대응시키기
  • IV, XC 같은 빼기 쌍 처리하기
  • 다음 문자를 보면서 문자열 훑기

문제

원문 보기 (영어)

유효한 로마 숫자를 그 값으로 변환하세요. 기호는 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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.