문제 링크 (opens new window)

# 문제 설명

  1. 구현문제
  2. 케이스 구분 후 직접 코딩, 범위가 좁아서 문자 하나씩 순회해도 됨
class Solution {
    func intToRoman(_ num: Int) -> String {
        var resultStrings: [String] = []

        var str = String(num).reversed()
        var tens = 0
        for char in str {
            let num = char.wholeNumberValue!

            switch tens {
            case 0:
                if num == 4 {
                    resultStrings.append("IV")
                    break
                } else if num == 9 {
                    resultStrings.append("IX")
                    break
                } else if num <= 3{
                    resultStrings.append(String(Array(repeating: "I", count: num)))
                    break
                } else if num >= 5 && num < 9 {
                    resultStrings.append("V" + String(Array(repeating:"I", count: num - 5)))
                }
            case 1:
                if num == 4 {
                    resultStrings.append("XL")
                    break
                } else if num == 9 {
                    resultStrings.append("XC")
                    break
                } else if num <= 3{
                    resultStrings.append(String(Array(repeating:"X", count: num)))
                    break
                } else if num >= 5 && num < 9 {
                    resultStrings.append("L" + String(Array(repeating:"X", count: num - 5)))
                }
            case 2:
                if num == 4 {
                    resultStrings.append("CD")
                    break
                } else if num == 9 {
                    resultStrings.append("CM")
                    break
                } else if num <= 3{
                    resultStrings.append(String(Array(repeating:"C", count: num)))
                    break
                } else if num >= 5 && num < 9 {
                    resultStrings.append("D" + String(Array(repeating:"C", count: num - 5)))
                }
            case 3:
                resultStrings.append(String(Array(repeating: "M", count: num)))
            default:
                break
            }
            tens += 1
        }

        return resultStrings.reversed().reduce("", {$0 + $1})
    }
}