LeetCode - Roman to Integer

박상준·2024년 5월 8일

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 값을 정해서 현재 값보다 이전 값이 더 크다면 뺄셈이 되게 했다.

profile
신입 개발자를 꿈꾸는 코린이

0개의 댓글