[Leetcode][Python/파이썬] #13. Roman to Integer

Kim Tae Won·2022년 9월 6일
0
post-thumbnail
post-custom-banner

13. Roman to Integer

문제

풀이

로마문자를 입력받아 정수로 변환하는 변환기를 만드는 문제이다. 생각보다 간단하게 해결가능했다.

먼저 문제의 규칙에 주목해야 한다.

  1. 큰 문자는 오른쪽부터 쓴다
  2. 작은 문자가 큰 문자 왼 쪽에 올 때는, 4를 나타낼 때IIII처럼 4개의 문자를 나열하는 것이 아닌 빼기를 통해 IV라고 나타낼 때 사용하게 된다. 즉 뒤의 큰 문자에서 앞의 작은 문자를 빼는 것이다. 이와 같은 경우는 문제에서 예를 들었듯 6개의 경우가 있다.

이 두가지 조건을 풀이에 잘 녹이면 다음과 같이 간단하게 풀 수 있다.

  1. 먼저 각 문자를 dictionary를 이용해 숫자에 매핑시킨다.
  2. 반복문을 돌며 위의 조건 2개를 체크한다.
def romanToInt(self, s: str) -> int:
    romans = {
        'I' : 1,
        'V' : 5,
        'X' : 10,
        'L' : 50,
        'C' : 100,
        'D' : 500,
        'M' : 1000
    }
    number = 0
    s_len = len(s)
    i = 0
    while(i < s_len):
        if i == s_len - 1:
            number += romans[s[i]]
            break
        if romans[s[i]] >= romans[s[i + 1]]:
            number += romans[s[i]]
            i += 1
        else:
            number += romans[s[i + 1]] - romans[s[i]]
            i += 2
    return number

결과

후기

  • 메모리 사용량은 매우 우수하게 잘 풀었으나, 속도가 생각보다 빠르지 않았다.
  • 조금 더 나은 방법을 고안해봐야겠다.
profile
꿈이 너무나 큰 평범한 컴공 대딩에서 취업 성공!
post-custom-banner

0개의 댓글