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 |