[LeetCode/Swift] 13번-Roman to Integer

kimdocs...📄·2022년 7월 30일

Algorithm

목록 보기
3/6
post-thumbnail

0) 문제 링크: Roman to Integer

1) 문제 접근 과정 및 구현 방법

  • 딕셔너리로 로마 숫자에 해당하는 integer를 저장해두고, 해당 원소를 만날때 더해줍니다.
  • 세가지의 경우 (I, X, C) 이전에 특정 문자가 올 경우 값을 빼서 더해줘야 하므로 answer+=-r, 일반적인 다른 경우는 answer

2) 코드 첨부

class Solution {
    func romanToInt(_ s: String) -> Int {
        let dict = ["I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000]
        var answer = 0
        let arr = Array(s)
        for i in 0..<arr.count-1 {
            var r = dict["\(arr[i])"] ?? 0
            if (arr[i] == "I" && (arr[i+1] == "V" || arr[i+1] == "X"))
                || (arr[i] == "X" && (arr[i+1] == "L" || arr[i+1] == "C"))
                || (arr[i] == "C" && (arr[i+1] == "D" || arr[i+1] == "M")) {
                answer += -r
                continue
            }
            answer += r
        }
        answer += dict["\(arr[arr.count-1])"] ?? 0
        return answer
    }
}

3) 어려웠던 점

  • 정석대로 푸는 방법이 있나.. 궁금
profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

0개의 댓글