
Solution
class Solution {
public int romanToInt(String s) {
HashMap<Character, Integer> romanValues = new HashMap<>();
romanValues.put('I', 1);
romanValues.put('V', 5);
romanValues.put('X', 10);
romanValues.put('L', 50);
romanValues.put('C', 100);
romanValues.put('D', 500);
romanValues.put('M', 1000);
int result = 0;
int preValue = 0;
for (int i = s.length() - 1; i >= 0 ; i--) {
int value = romanValues.get(s.charAt(i));
if (value < preValue) {
result -= value;
} else {
result += value;
}
preValue = value;
}
return result;
}
}
해쉬맵을 생성해 각 로마 숫자에 대해서 대응하는 값을 저장한 뒤 문자열의 오른쪽에서 왼쪽순으로 각 로마 숫자에 해당하는 값을 더해줬다.
로마 숫자 특성 때문에 preValue 값을 정해서 현재 값보다 이전 값이 더 크다면 뺄셈이 되게 했다.