본문 바로가기

알고리즘

letCode - Roman to Integer

import java.util.Arrays;
import java.util.HashMap;

public class algo {
    public static void main(String[] args) {
        String s = "MCMXCIV";

        romanToInt(s);
    }

    public static int romanToInt(String s) {
        Character[] romans = {'M', 'D', 'C', 'L', 'X', 'V', 'I'};
        int[] values = {1000, 500, 100, 50, 10, 5, 1};
        int answer = 0;
        HashMap<Character, Integer> integerHashMap = new HashMap<>();

        for (int i = 0; i < romans.length; i++) {
            integerHashMap.put(romans[i], values[i]);
        }

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);

            if (i>0 && integerHashMap.get(c) > integerHashMap.get(s.charAt(i-1))) {
                answer += integerHashMap.get(c) - 2*integerHashMap.get(s.charAt(i-1));
            } else {
                answer += integerHashMap.get(c);
            }
        }

        return answer;
    }
}

 

 

핵심 : 규칙을 짜서 간략화 하자.

'알고리즘' 카테고리의 다른 글

Binary Search Tree(이진 탐색 트리)  (0) 2022.02.14
프로그래머스 - 뉴스 클러스터링  (0) 2022.02.12
letCode - Longest Palindromic Substring ( 1차 )  (0) 2022.02.04
letCode - Add Two Numbers  (0) 2022.02.04
leetCode - twoSum  (0) 2022.02.03