12. Integer to Roman

def solution(num):
    if(0<num<=5):
        if(num<4):
            return (num)*"I"
        else:
            return (5-num)*"I"+"V"
    elif(5<num<=10):
        return "V"+(num-5)*"I"
    elif(10<num<=50):
        left_10=num%10
        if(0<=left_10<=5):
            if(left_10<4):
                return (num/10)*"X"+(left_10)*"I"
            else:
                return (num/10)*"X"+(5-left_10)*"I"+"V"
        else:
            if(5<left_10<9):
                return (num/10)*"X"+"V"+(left_10-5)*"I"
            else:
                return (num/10)*"X"+(10-left_10)*"I"+"V"
    elif(50<num<=100):
        left_50=num%50
        if(10<left_50<=50):
            left_10=left_50%10
            if(0<=left_10<=5):
                if(left_10<4):
                    return (num/50)*"L"+(left_50/10)*"X"+(left_10)*"I"
                else:
                    return (num/50)*"L"+(left_50/10)*"X"+(5-left_10)*"I"+"V"
            else:
                if(5<left_10<9):
                    return (num/50)*"L"+(left_50/10)*"X"+"V"+(left_10-5)*"I"
                else:
                    return (num/50)*"L"+(left_50/10)*"X"+(10-left_10)*"I"+"V"
    elif(100<num<=500):
        left_100=num%100
        if(50<left_100<=100):
            left_50=left_100%50
            if(10<left_50<=50):
                left_10=left_50%10
                if(0<=left_10<=5):
                    if(left_10<4):
                        return (num/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(left_10)*"I"
                    else:
                        return (num/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(5-left_10)*"I"+"V"
                else:
                    if(5<left_10<9):
                        return (num/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+"V"+(left_10-5)*"I"
                    else:
                        return (num/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(10-left_10)*"I"+"V"
    elif(500<num<1000):
        left_500=num%50
        if(100<left_500<=500):
            left_100=left_500%100
            if(50<left_100<=100):
                left_50=left_100%50
                if(10<left_50<=50):
                    left_10=left_50%10
                    if(0<=left_10<=5):
                        if(left_10<4):
                            return (num/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(left_10)*"I"
                        else:
                            return (num/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(5-left_10)*"I"+"V"
                    else:
                        if(5<left_10<9):
                            return (num/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+"V"+(left_10-5)*"I"
                        else:
                            return (num/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(10-left_10)*"I"+"V"
    else:
        left_1000=num%1000
        if(500<left_1000<1000):
            left_500=left_1000%50
            if(100<left_500<=500):
                left_100=left_500%100
                if(50<left_100<=100):
                    left_50=left_100%50
                    if(10<left_50<=50):
                        left_10=left_50%10
                        if(0<=left_10<=5):
                            if(left_10<4):
                                return (num/1000)*"M"+(left_1000/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(left_10)*"I"
                            else:
                                return (num/1000)*"M"+(left_1000/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(5-left_10)*"I"+"V"
                        else:
                            if(5<left_10<9):
                                return (num/1000)*"M"+(left_1000/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+"V"+(left_10-5)*"I"
                            else:
                                return (num/1000)*"M"+(left_1000/500)*"D"+(left_500/100)*"C"+(left_100/50)*"L"+(left_50/10)*"X"+(10-left_10)*"I"+"V"

print(solution(9))