LeetCode 13. Roman to Integer

margarinยท2021๋…„ 2์›” 18์ผ
0

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
8/13

๋ฌธ์ œ

๐Ÿ‘‰ 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;
    }
};
profile
ํ™”์ดํŒ… ๐Ÿฅน

0๊ฐœ์˜ ๋Œ“๊ธ€