문제를 이해하는 것에는 어렵지 않았고 문자어로 쓰여있는 것을 각각 숫자로 변환하여 더해주면 되는 듯한 간단한 문제라고 생각이 되었다.
-> 하지만 단순히 이런 방식을 꾀하면 VI(6)와 IV(4)의 차이가 없어진다. 따라서 뒤에 큰 숫자가 오면 (큰 수 - 작은 수)의 방법을 취해야 하는 것을 알 수 있다.
어떻게 풀어야 할지 막막했는데 문자열을 뒤집은 뒤 비교하면서 빼주는 식으로 진행하면 훨씬 수월하게 풀 수 있다.
먼저 딕셔너리를 선언하여 각각 대칭되는 문자와 숫자를 넣어주도록 한다.
class Solution:
def romanToInt(self, s: str) -> int:
romans = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
ctr = 'I'
num = 0
for i in s[::-1]:
if romans[i] < romans[ctr]:
num = num - romans[i]
else:
num = num + romans[i]
ctr = i
return num