118 / 205
LeetCode · MediumO'rta20 ball· ~25 daqiqa

Integer to Roman

Rim raqamlari yettita turli belgi orqali ifodalanadi: I, V, X, L, C, D, M. Butun son num berilgan. Uni Rim raqamlariga aylantiruvchi algoritm yozing.

Qoidalar: I=1, V=5, X=10, L=50, C=100, D=500, M=1000. Ayirish shakllari: IV=4, IX=9, XL=40, XC=90, CD=400, CM=900. Cheklov: 1 ≤ num ≤ 3999.

example.go
func solve(num int) string {
    // ...
}

Misollar

kod
Input: num = 3
Output: "III"
kod
Input: num = 58
Output: "LVIII"
kod
Input: num = 1994
Output: "MCMXCIV"

Maslahatlar

  1. Rim raqamlarini alohida-alohida chiqarish o'rniga, qiymatlarni eng kattasidan boshlab greedy (ochko'z) tarzda ayirib borishni o'ylab ko'ring — bunda 4, 9, 40, 90, 400, 900 kabi maxsus kombinatsiyalarni ham alohida "qiymat" sifatida hisoblash qulay bo'ladi.
  2. Qiymatlar va ularga mos belgilarni kamayish tartibida ikkita mos ro'yxatda saqlang (masalan 1000→"M", 900→"CM", ..., 1→"I"); ro'yxat bo'ylab yurib, num shu qiymatdan katta yoki teng bo'lguncha uni ayirib mos belgini natijaga qo'shing, so'ng keyingi qiymatga o'ting.