# 13.Roman to Integer

# Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.

# Symbol       Value
# I             1
# V             5
# X             10
# L             50
# C             100
# D             500
# M             1000
# For example, two is written as II in Roman numeral, just two one's added together. 
# Twelve is written as, XII, which is simply X + II. The number twenty seven is written as XXVII, which is XX + V + II.

# Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII. 
# Instead, the number four is written as IV. Because the one is before the five we subtract it making four. 
# The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:

# I can be placed before V (5) and X (10) to make 4 and 9. 
# X can be placed before L (50) and C (100) to make 40 and 90. 
# C can be placed before D (500) and M (1000) to make 400 and 900.
# Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.

# Example 1:

# Input: "III"
# Output: 3
# Example 2:

# Input: "IV"
# Output: 4
# Example 3:

# Input: "IX"
# Output: 9
# Example 4:

# Input: "LVIII"
# Output: 58
# Explanation: L = 50, V= 5, III = 3.
# Example 5:

# Input: "MCMXCIV"
# Output: 1994
# Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.


class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        roman = {"I" : 1,
                 "V" : 5,
                 "X" : 10,
                 "L" : 50,
                 "C" : 100,
                 "D" : 500,
                 "M" : 1000}

        total = 0
        for x in range(len(s)):
            if(x == len(s) - 1):
                total += roman[s[x]]
            else:
                if(roman[s[x]] >= roman[s[x+1]]):
                    total += roman[s[x]]
                else:
                    total -= roman[s[x]]
        
        return total



# Success
# Details 
# Runtime: 40 ms, faster than 65.20% of Python online submissions for Roman to Integer.
# Memory Usage: 11.9 MB, less than 6.45% of Python online submissions for Roman to Integer.


########### EXPLICATION ###########
Créer le dictionnaire de python, roman. 
Dans le String s, si la valeur de l'indice x est egale ou plus grand que la valeur de l'indice x+1, 
ajoutez la valeur de l'indice x au total. sinon, soustrayez la valeur du total. 
c'est parce que XI = 11, mais IX = 9. 
ex1) XI = 10 + 1 = 11
ex2) IX = -1 + 10 = 9

La valeur de la dernière indice n'a pas de la valeur de l'indice x+1 pour comparer, créez un autre if pour juste ajouter au total. 



