[LeetCode] 13. Roman to Integer

2025. 2. 12. 16:13·dev/algorithm

1. 문제

문제

로마자를 숫자로 변환하여 반환하는 함수를 구현하는 문제이다.

 

2. 풀이

이 문제의 핵심은 로마자의 결합여부 확인이다.

 

문제의 TestCase1 처럼 단순한 문자는 그냥 숫자를 더하면 된다.

"III"
 III = 3.

 

 

하지만 로마자는 IV  = 4 와 같이 결합이 가능하다.

"MCMXCIV"

 

M = 1000, CM = 900, XC = 90 and IV = 4.

 

 

결합되어 있는 문자 케이스를 잘 보면, 앞에 있는 문자의 값보다 뒤에 있는 문자의 값이 더 크다. 

CM의 경우 'C' = 100, 'M' = 1000 이고 CM = 900이다.

즉, CM 은 M-C 이다. 이 원리를 이용하면 쉽게 풀 수 있다.

 

class Solution {
    public int romanToInt(String s) {
        HashMap<Character, Integer> hm = new HashMap<>();

        hm.put('I', 1);
        hm.put('V', 5);
        hm.put('X', 10);
        hm.put('L', 50);
        hm.put('C', 100);
        hm.put('D', 500);
        hm.put('M', 1000);

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

        answer += hm.get(s.charAt(s.length()-1));

        return answer;
    }
}

'dev > algorithm' 카테고리의 다른 글

[LeetCode] 4. Median of Two Sorted Arrays  (0) 2025.02.12
[LeetCode] 3. Longest Substring Without Repeating Characters  (0) 2025.02.09
[LeetCode] 1. Two Sum  (0) 2025.02.09
[LeetCode] 2364. Count Number of Bad Pairs  (0) 2025.02.09
[CodeSignal] ZigZag - Java  (0) 2025.02.08
'dev/algorithm' 카테고리의 다른 글
  • [LeetCode] 4. Median of Two Sorted Arrays
  • [LeetCode] 3. Longest Substring Without Repeating Characters
  • [LeetCode] 1. Two Sum
  • [LeetCode] 2364. Count Number of Bad Pairs
hand-mk
hand-mk
  • hand-mk
    보조기억장치
    hand-mk
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • 회고록 (2)
      • 자격증 (1)
        • aws (1)
      • dev (24)
        • se (5)
        • algorithm (6)
        • ai (3)
        • scm (1)
        • backend (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    vmware
    Cloudflare
    ubuntu
    워드클라우드
    queryDSL
    폐쇄망
    codesignal
    leetcode
    python
    KoNLPy
    springboot
    ollama
    WSL
    exaone3.5
    java
    vectordb
    코테
    docker
    telegraf
    linux
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
hand-mk
[LeetCode] 13. Roman to Integer
상단으로

티스토리툴바