こちらは「Roman To Integer」のPythonによる解答例となっております。この問題は、ローマ数字が与えられたときに、それを整数に変換する問題です。
問題
ローマ数字が与えられたとき、それを整数に変換して返します。
sは、ローマ数字で表された文字列で、長さは1以上15以下です。sの文字は、'I'、'V'、'X'、'L'、'C'、'D'、'M'から成ります。sは、次のいずれかの形式になっています。- 1 <= s.length <= 15
 - s[i]: ‘I’, ‘V’, ‘X’, ‘L’, ‘C’, ‘D’, ‘M’
 
1 <= ans <= 3999
解法
この問題は、ローマ数字を整数に変換することが求められています。基本的な考え方は、ローマ数字を一つずつ処理して、対応する数値を足し合わせることです。
アルゴリズムの概要を以下に述べます。
- ローマ数字と整数の対応表を作成します。
 - 特定のローマ数字の表記を整数に変換するために、ローマ数字を操作します。
 - 入力されたローマ数字を一つずつ処理して、対応する数値を足し合わせます。
 
Pythonコード
以下のコードが、「Roman to Integer」を解くためのPythonプログラムとなります。
### Function ##################################################################
def solve(num=0):
    
    solver  = Solution().romanToInt
    
    if 1 <= num <= Input().input: id_LIST = [num]
    else: id_LIST = [id+1 for id in range(Input().input)]
    
    for id in id_LIST:
        data    = Input(id)
        ans     = solver(data.s)
        result  = "OK" if ans==data.ans else "NG"
        print(f"[{str(id).zfill(3)}] {result}")
### Class #####################################################################
class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
            1 <= s.length <= 15
            s[i]: 'I', 'V', 'X', 'L', 'C', 'D', 'M'
        :rtype: int
            1 <= ans <= 3999
        """
        
        romanToInt_DICT = {
            "I": 1,
            "V": 5,
            "X": 10,
            "L": 50,
            "C": 100,
            "D": 500,
            "M": 1000
        }
        
        s = s.replace("IV", "IIII")     ### 4
        s = s.replace("IX", "VIIII")    ### 9
        s = s.replace("XL", "XXXX")     ### 40
        s = s.replace("XC", "LXXXX")    ### 90
        s = s.replace("CD", "CCCC")     ### 400
        s = s.replace("CM", "DCCCC")    ### 900
        
        number = 0
        for char in s:
            number += romanToInt_DICT[char]
        
        return number
#==============================================================================
class Input:
    
    def __init__(self, num=0):
        
        if num == 1:
            self.s = "III"
            self.ans = 3
        
        elif num == 2:
            self.s = "LVIII"
            self.ans = 58
        elif num == 3:
            self.s = "MCMXCIV"
            self.ans = 1994
        
        else:
            self.input  = 3
### Main ######################################################################
if __name__ == "__main__":
    solve()
###############################################################################