본문 바로가기

알고리즘/LeetCode

[LeetCode] 13. Roman to Integer (Easy)

영어 문제에 익숙해지기 위해, LeetCode 문제를 풀어보기로 했습니다.

Challenges for New Users의 첫번째 문제인 Roman to Integer로 시작하였습니다.

로마자로 표기된 숫자를 string 형태로 입력받고, 이를 integer 형태의 숫자로 변환하는 간단한 문제입니다.

switch 문을 사용하여 각 문자에 맞는 수를 answer에 더했습니다. 이 때 4, 9, 40, 90, 400, 900은 다른 두 문자로 만들어지기 때문에 앞 문자로 사용될 수 있는 I, X, C case에서 if문을 추가하였습니다.

 

class Solution {
public:
    int romanToInt(string s) {
        int answer = 0;
        for(int i=0;i<s.size();i++){
            switch(s[i])
            {
                case 'M':
                    answer += 1000;
                    break;
                case 'D':
                    answer += 500;
                    break;
                case 'C':
                    if(i != s.size()-1 && s[i+1] == 'M')
                    {
                        answer += 900;
                        i++;
                    }
                    else if (i != s.size()-1 && s[i+1] == 'D')
                    {
                        answer += 400;
                        i++;
                    }
                    else
                        answer += 100;
                    break;
                case 'L':
                    answer += 50;
                    break;
                case 'X':
                    if(i != s.size()-1 && s[i+1] == 'C')
                    {
                        answer += 90;
                        i++;
                    }
                    else if (i != s.size()-1 && s[i+1] == 'L')
                    {
                        answer += 40;
                        i++;
                    }
                    else
                        answer += 10;
                    break;
                case 'V':
                    answer += 5;
                    break;
                case 'I':
                    if(i != s.size()-1 && s[i+1] == 'X')
                    {
                        answer += 9;
                        i++;
                    }
                    else if (i != s.size()-1 && s[i+1] == 'V')
                    {
                        answer += 4;
                        i++;
                    }
                    else
                        answer += 1;
                    break;       
            }
        }
        
        return answer;
    }
};