You convert by adding values of symbols from left to right, but if a smaller value precedes a larger one, subtract the smaller from the larger.
Click to reveal answer
beginner
Why do we subtract in Roman numeral conversion when a smaller numeral comes before a larger one?
Because in Roman numerals, placing a smaller numeral before a larger one means subtraction, like IV means 5 - 1 = 4.
Click to reveal answer
beginner
What is the integer value of the Roman numeral 'IX'?
'IX' equals 9 because I (1) is before X (10), so 10 - 1 = 9.
Click to reveal answer
beginner
What is the first step in the Roman to Integer conversion algorithm?
The first step is to map each Roman numeral character to its integer value.
Click to reveal answer
What integer does the Roman numeral 'L' represent?
A100
B500
C50
D10
✗ Incorrect
'L' represents 50 in Roman numerals.
In Roman numeral conversion, what do you do when a smaller numeral is before a larger numeral?
ASubtract the smaller numeral
BIgnore the smaller numeral
CAdd the smaller numeral
DMultiply the numerals
✗ Incorrect
When a smaller numeral comes before a larger one, subtract the smaller from the larger.
What is the integer value of 'XV'?
A15
B14
C5
D20
✗ Incorrect
'X' is 10 and 'V' is 5, so 10 + 5 = 15.
Which Roman numeral represents 100?
AL
BD
CM
DC
✗ Incorrect
'C' represents 100 in Roman numerals.
What is the result of converting 'IV' to an integer?
A6
B4
C9
D11
✗ Incorrect
'IV' means 5 - 1 = 4.
Explain the rule for subtracting values in Roman numeral to integer conversion.
Think about when a smaller symbol comes before a bigger one.
You got /3 concepts.
Describe the step-by-step process to convert a Roman numeral string to an integer.
Imagine reading the Roman numeral from left to right.
You got /5 concepts.
Practice
(1/5)
1. What is the value of the Roman numeral IX when converted to an integer?
easy
A. 6
B. 11
C. 19
D. 9
Solution
Step 1: Understand Roman numeral rules for subtraction
In Roman numerals, when a smaller numeral appears before a larger one, it is subtracted. Here, I (1) is before X (10), so 1 is subtracted from 10.
Step 2: Calculate the integer value
10 - 1 = 9.
Final Answer:
9 -> Option D
Quick Check:
IX = 9 [OK]
Hint: Subtract when smaller numeral is before larger one [OK]
Common Mistakes:
Adding values instead of subtracting
Confusing IX with XI
Ignoring subtraction rule
2. Which of the following Go code snippets correctly initializes a map for Roman numeral values?
easy
A. romanMap := map[string]int{"I" = 1, "V" = 5, "X" = 10}
B. romanMap := map[int]string{1: "I", 5: "V", 10: "X"}
C. romanMap := map[string]int{"I": 1, "V": 5, "X": 10}
D. romanMap := map[string]int{I: 1, V: 5, X: 10}
Solution
Step 1: Check map key and value types
The map should have string keys (Roman numerals) and int values (their integer equivalents). romanMap := map[string]int{"I": 1, "V": 5, "X": 10} uses map[string]int correctly.
Step 2: Verify syntax correctness
romanMap := map[string]int{"I": 1, "V": 5, "X": 10} uses correct Go syntax with colon ':' to assign values. Options A and C have syntax errors, and B reverses key-value types.
Correct map syntax uses colons and proper types [OK]
Hint: Use colon ':' for map key-value pairs in Go [OK]
Common Mistakes:
Using '=' instead of ':' in map initialization
Swapping key and value types
Omitting quotes around string keys
3. What will be the output of the following Go code snippet?
func romanToInt(s string) int {
romanMap := map[byte]int{'I': 1, 'V': 5, 'X': 10}
total := 0
for i := 0; i < len(s); i++ {
if i+1 < len(s) && romanMap[s[i]] < romanMap[s[i+1]] {
total -= romanMap[s[i]]
} else {
total += romanMap[s[i]]
}
}
return total
}
fmt.Println(romanToInt("IV"))
medium
A. 6
B. 4
C. 9
D. Error
Solution
Step 1: Analyze the loop and subtraction logic
The code subtracts the value if the current numeral is less than the next one, else adds it. For "IV", 'I' (1) < 'V' (5), so subtract 1, then add 5.
Step 2: Calculate total value
Total = -1 + 5 = 4.
Final Answer:
4 -> Option B
Quick Check:
IV = 4 using subtraction rule [OK]
Hint: Subtract when current < next numeral [OK]
Common Mistakes:
Adding all values without subtraction
Index out of range errors
Confusing byte and string keys in map
4. The following Go function is intended to convert Roman numerals to integers. What is the bug?
func romanToInt(s string) int {
romanMap := map[byte]int{'I': 1, 'V': 5, 'X': 10}
total := 0
for i := 0; i < len(s); i++ {
if romanMap[s[i]] < romanMap[s[i+1]] {
total -= romanMap[s[i]]
} else {
total += romanMap[s[i]]
}
}
return total
}
medium
A. Missing check for i+1 < len(s) causing index out of range
B. Using map with byte keys instead of string keys
C. Incorrect subtraction logic for Roman numerals
D. Returning total before loop ends
Solution
Step 1: Identify loop boundary issue
The code accesses s[i+1] without checking if i+1 is within string length, causing possible index out of range error.