-
[leetcode - Python] Roman to IntegerProblem Solving 2022. 7. 19. 14:29
문제 설명
https://leetcode.com/problems/roman-to-integer/submissions/
Roman to Integer - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
- 난이도 - Medium
문자열로 주어지는 로마 숫자를 아라비아 숫자로 바꾸는 문제
접근 방법
기본적으로 알파벳을 만나면 해당 숫자를 더해주는데,
만난 알파벳보다 그 다음 알파벳이 더 크면 빼준다.
이때 주의해야할 점은, 문제 예시엔 I, X, C에 대한 총 6가지 예시만 나와있지만,
모든 알파벳에 대해 만난 알파벳보다 그 다음 알파벳이 더 크면 빼줘야 하는 규칙이 적용된다.
답안 코드 1. 조건문
Runtime: 112 ms (7.42%)
Memory Usage: 13.9 MB (76.17%)class Solution: def romanToInt(self, s: str) -> int: result = 0 for i in range(len(s)): if s[i] == 'I': if i <= len(s) - 2 and (s[i+1] in ['V', 'X']) : result -= 1 else: result += 1 elif s[i] == 'V': result += 5 elif s[i] == 'X': if i <= len(s) - 2 and (s[i+1] in ['L', 'C']): result -= 10 else: result += 10 elif s[i] == 'L': result += 50 elif s[i] == 'C': if i <= len(s) - 2 and (s[i+1] in ['D', 'M']): result -= 100 else: result += 100 elif s[i] == 'D': result += 500 elif s[i] == 'M': result += 1000 return result
답안 코드 2. 딕셔너리
Runtime: 53 ms (87.62%)
Memory Usage: 13.9 MB (76.17%)class Solution: def romanToInt(self, s: str) -> int: mapping = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000 } result = 0 for i in range(len(s)-1): if mapping[s[i]] < mapping[s[i+1]]: result -= mapping[s[i]] else: result += mapping[s[i]] result += mapping[s[len(s)-1]] return result
'Problem Solving' 카테고리의 다른 글
[백준] 19071. 외판원 순회2 - C++ (0) 2023.01.10 [leetcode - python] Excel Sheet (0) 2022.07.20 [leetcode - python] Majority Element (0) 2022.07.18 [leetcode - C] Maximum Subarray (0) 2022.07.16 [leetcode] 204. Count Primes - C (0) 2022.04.14