๐ 13. Roman to Integer
Example 1:
Input: s = "III"
Output: 3
Example 2:
Input: s = "IV"
Output: 4
Example 3:
Input: s = "IX"
Output: 9
Example 4:
Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.
Example 5:
Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
๊ฐ ๋ฌธ์์ ํด๋นํ๋ ๊ฐ์ T๋ผ๋ Map์ ์ ์ฅํ๋ค.
๋ฌธ์ ๋ 'CM' , 'XC' ์ ๊ฐ์ด ๋ฌธ์ ๋ ๊ฐ๊ฐ ๋ถ๋ ๋ฌธ์์ ๊ฐ์ ๊ณ์ฐํด์ผํ๋๋ฐ
s1๋ฒ์งธ ๊ฐ๊ณผ s2์ ๊ฐ์ ๋น๊ตํด์ T[s1] < T[s2] ์ธ ๊ฒฝ์ฐ
T[s2]์์ T[s1]์ ๊ฐ์ ๋นผ์ ๋ํ๋ค.
์์ 5๋ฒ์์ T['C'] = 100, T['M'] = 1000 ์ด๊ณ
100 < 1000 ์ด๋ฏ๋ก 'CM'์ ๊ฐ์ 1000-100์ธ 900์ด๋ค.
map<char, int> T = {{ 'I' , 1 },
{ 'V' , 5 },
{ 'X' , 10 },
{ 'L' , 50 },
{ 'C' , 100 },
{ 'D' , 500 },
{ 'M' , 1000 }};
class Solution {
public:
int romanToInt(string s) {
int sum = 0;
for(int i = 0; i < s.size(); i++){
if (T[s[i]] < T[s[i+1]]) {
sum += T[s[i+1]] - T[s[i]];
i++;
} else {
sum += T[s[i]];
}
}
return sum;
}
};