[LeetCode] Roman to Integer

urzi·2022년 6월 27일
0

PS

목록 보기
24/36

문제

https://leetcode.com/problems/roman-to-integer/submissions/

알고리즘

문자열

풀이

간단하지만 정리해놓으면 도움이 될 거 같아서 정리해본다.
로마문자에 대한 이해가 있어야 한다.

  1. 뒤에 문자가 내 문자보다 크면 내 문자는 독립적으로 숫자화 할 수 없고 뒤에 숫자에서 뺴는 역할이다.
  2. 그러므로 뒤에 문자가 내 문자보다 크면 정답 Integer에서 내 문자의 숫자만큼 빼준다.
  3. 뒤에 문자가 내 문자보다 작거나 같으면 내 문자는 독립적으로 숫자화 할 수 있다.

코드

import java.util.HashMap;

class Solution {
    public int romanToInt(String s) {

        HashMap<Character, Integer> roman = new HashMap<>();
        roman.put('I', 1);
        roman.put('V', 5);
        roman.put('X', 10);
        roman.put('L', 50);
        roman.put('C', 100);
        roman.put('D', 500);
        roman.put('M', 1000);

        int answer = 0;

        for (int i = 0; i < s.length(); i++) {
            if (i != s.length() - 1) {
                if (roman.get(s.charAt(i)) < roman.get(s.charAt(i + 1))) {
                    answer -= roman.get(s.charAt(i));
                } else {
                    answer += roman.get(s.charAt(i));
                }
            } else {
                answer += roman.get(s.charAt(i));
            }
        }

        return answer;
    }
}
profile
Back-end Developer

0개의 댓글