[LeetCode]Roman to Integer

2023. 3. 18. 19:07·SW개발/코딩테스트

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

 

Roman to Integer - LeetCode

Can you solve this real interview question? Roman to Integer - Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, 2 is written as II in Roman numeral, just tw

leetcode.com

 

문제 분석

로마 숫자를 10진법 정수로 변환하는 문제입니다.

 

답안 

class Solution:
    def romanToInt(self, s: str) -> int:
        """
        Change roman numeral system to our numeral system
        """
        symbol_dict = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M': 1000}

        s = s.replace('IV', 'IIII').replace('IX', 'VIIII')
        s = s.replace('XL', 'XXXX').replace('XC', 'LXXXX')
        s = s.replace('CD', 'CCCC').replace('CM', 'DCCCC')

        output = 0

        for char in s:
            output += symbol_dict[char]

        return output

접근 방법

  1. symbol에 해당하는 값을 가지고 있는 딕셔너리를 만듭니다.
  2. 제약조건에 나와있는 로마 숫자의 시스템을 우리만의 시스템으로 간략화합니다.
  3. IV -> IIII 와 같이 문자를 바꿔치기해 더하기에 용이하도록 변경합니다.
  4. 반복문을 순회하면서 숫자를 더합니다.

처음에는 제약조건에 나와있는 규칙을 토대로 값을 더하거나 빼는 방식으로 구현했습니다. 하지만 몇몇 코너케이스에서 계속 통과가 되지 않아서 다른 풀이를 참조했습니다.

 

정말 쉽고 좋은 풀이를 발견하게 되었는데 바로 로마 숫자 시스템을 간략화 해 덧셈만으로만 계산이 되도록 바꾸는 방법입니다. 물론, 이 방법은 6가지로 경우의 수가 한정이 되어 있었기에 간략화 하는 것이 가능 했습니다. 하지만 종종 이런 방향으로 사고하는 것도 필요할 것 같습니다.

 

728x90

'SW개발 > 코딩테스트' 카테고리의 다른 글

[LeetCode]Valid Parentheses  (0) 2023.03.19
[LeetCode]Longest Common Prefix  (0) 2023.03.19
[LeetCode]Two Sum  (0) 2023.03.18
[프로그래머스]정수 삼각형 - DP  (0) 2021.12.31
[프로그래머스]N으로 표현 - DP  (0) 2021.12.31
'SW개발/코딩테스트' 카테고리의 다른 글
  • [LeetCode]Valid Parentheses
  • [LeetCode]Longest Common Prefix
  • [LeetCode]Two Sum
  • [프로그래머스]정수 삼각형 - DP
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • SW개발 (303)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (1)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Contributor
    음식
    컨트리뷰터
    어플리케이션
    django
    배공파용
    라이프 스타일
    플레이스토어
    배달비 공유
    g
    오픈소스
    트리 #AVL #알고리즘 #자료구조
    배달
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[LeetCode]Roman to Integer
상단으로

티스토리툴바