문제
풀이
로마문자를 입력받아 정수로 변환하는 변환기를 만드는 문제이다. 생각보다 간단하게 해결가능했다.
먼저 문제의 규칙에 주목해야 한다.
IIII
처럼 4개의 문자를 나열하는 것이 아닌 빼기를 통해 IV
라고 나타낼 때 사용하게 된다. 즉 뒤의 큰 문자에서 앞의 작은 문자를 빼는 것이다. 이와 같은 경우는 문제에서 예를 들었듯 6개의 경우가 있다.이 두가지 조건을 풀이에 잘 녹이면 다음과 같이 간단하게 풀 수 있다.
def romanToInt(self, s: str) -> int:
romans = {
'I' : 1,
'V' : 5,
'X' : 10,
'L' : 50,
'C' : 100,
'D' : 500,
'M' : 1000
}
number = 0
s_len = len(s)
i = 0
while(i < s_len):
if i == s_len - 1:
number += romans[s[i]]
break
if romans[s[i]] >= romans[s[i + 1]]:
number += romans[s[i]]
i += 1
else:
number += romans[s[i + 1]] - romans[s[i]]
i += 2
return number
결과
후기