
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) 어려웠던 점