**Problem Statement:**
Given the required input arguments, write an efficient algorithm to solve the **Integer to Roman** problem. Implement the required logic as specified by standard definitions for this classic algorithmic challenge.
**Hint / Expected Approach:**
Greedy subtraction of largest values
**Edge Cases to Consider:**
- (1) Input = 1
- (2) Input = 3999 (max)
- (3) Subtractive notation cases