[LeetCode/Kotlin]Easy - 13. Roman to Integer

2024. 5. 9. 17:17LeetCode/Kotlin | Easy

728x90
반응형

Easy - 13. Roman to Integer

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

나의 풀이

풀이 접근 과정

우선 로마 숫자를 모두 배열에 넣고 치환하여 더하는 작업 진행

최종 풀이

class Solution {
    fun romanToInt(s: String): Int {
        var input = s
        var answer = 0

        val map: Array<Pair<String, Int>> = arrayOf(
            "CM" to 900,
            "CD" to 400,
            "XC" to 90,
            "XL" to 40,
            "IX" to 9,
            "IV" to 4,
            "M" to 1000,
            "D" to 500,
            "C" to 100,
            "L" to 50,
            "X" to 10,
            "V" to 5,
            "I" to 1
        )

        map.forEach {
            if (input.contains(it.first)) {
                val beforeLength = input.length
                input = input.replace(it.first, "")
                val nowLength = input.length

                answer += it.second*(beforeLength-nowLength) / when (it.first.length) {
                    1 -> 1
                    2 -> 2
                    else -> 0
                }
            }
        }

        return answer
    }
}
  1. 반복문을 한번만 돌기 위해 합성로마숫자를 배열의 처음으로 위치시킨다.
  2. 로마숫자 배열에서 반복문을 돌린다.
    1. 현재 로마 숫자가 s 문자열에 포함되어 있으면 해당 글자를 모두 빈값(””)으로 치환한다.
    2. 달라진 문자열 길이의 차이만큼 로마 숫자의 값을 더해준다.
  3. 그렇게 만들어진 answer를 return 한다.

 

Comment

replace 하는 과정에서 시간을 많이 잡아먹는 것 같음.

728x90
반응형