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;
}

 

 

적절한 결과.