Leetcode Roman to integer

Published: by Creative Commons Licence

LeetCode - Roman to Integer

보완할 수 있는 점
  • 빼기 연산을 해야하는 문자열이 겹칠 경우가 없다는 것을 잘 생각하면 그냥 문자열에 포함 되어있나 안되어있나로도 찾을 수 있다.
  • map 자료 구조를 구지 안써도 된다는점.
class Solution {
public:
    int romanToInt(string s) {
        
        map<char,int> m;
        m['I']=1, m['V']=5, m['X']=10, m['L']=50, m['C']=100, m['D']=500, m['M']=1000;
        int len = s.size();
        int ans = 0;
        
        for(int i=0;i<len;i++){
            if(i==len-1){
                ans+=m[s[i]];
                continue;
            }
            if(s[i]=='I' && s[i+1] =='V') {
                ans+=m[s[i+1]]-m[s[i]];
                i++;
            }
            else if(s[i]=='I' && s[i+1] =='X') ans+=m[s[i+1]]-m[s[i++]];
            else if(s[i]=='X' && s[i+1] =='L') ans+=m[s[i+1]]-m[s[i++]];
            else if(s[i]=='X' && s[i+1] =='C') ans+=m[s[i+1]]-m[s[i++]];
            else if(s[i]=='C' && s[i+1] =='M') ans+=m[s[i+1]]-m[s[i++]];
            else if(s[i]=='C' && s[i+1] =='D') ans+=m[s[i+1]]-m[s[i++]];
            else ans+=m[s[i]];
            
        }
        return ans;
    }
};