Leetcode/Top Interview 150
[Array/String][Easy] 13. Roman To Integer
자전거통학
2024. 5. 1. 05:48
https://leetcode.com/problems/roman-to-integer/description
Q. 주진 로마 문자를 숫자로 변환하라.
Solution
이 문제는 1씩 모자라는 숫자들에 대해 특별 처리가 필요하며, 그것을 제외하면 특별한 내용은 없다.
더보기
public int RomanToInt(string s)
{
Dictionary<string, int> dictValue = new Dictionary<string, int>();
dictValue.Add("I", 1);
dictValue.Add("V", 5);
dictValue.Add("X", 10);
dictValue.Add("L", 50);
dictValue.Add("C", 100);
dictValue.Add("D", 500);
dictValue.Add("M", 1000);
dictValue.Add("IV", 4);
dictValue.Add("IX", 9);
dictValue.Add("XL", 40);
dictValue.Add("XC", 90);
dictValue.Add("CD", 400);
dictValue.Add("CM", 900);
int ret = 0;
for(int q = 0; q < s.Length; ++q)
{
char cur = s[q];
bool special = false;
if(q+1<s.Length && (cur=='I' || cur=='X' || cur=='C'))
{
string cut = s.Substring(q, 2);
if(dictValue.ContainsKey(cut))
{
special = true;
ret += dictValue[cut];
++q;
}
}
if(!special)
{
string curStr = char.ToString(cur);
if(dictValue.ContainsKey(curStr))
{
ret += dictValue[curStr];
}
}
}
return ret;
}
적절한 결과.