Roman to Integer
์ฌ๋ฏธ์๋ ๋ฌธ์ ..
์ฐ์ ๋์ ๋๋ฆฌ๋ฅผ ๊ตฌํํด์ ๊ฐ ๋ก๋ง์ซ์์ ๋ง๋ ์๋ผ๋น์ ์ซ์๋ฅผ ์ ์ฅํ๋ค.
๋ฌธ์ ๋ 'IV' ๋ 4, 'VI'๋ 6,,, ์ด์ฒ๋ผ ํฐ์ซ์ ์์ ์์์ซ์๊ฐ ์ค๋ฉด ํฐ์ซ์์์ ๋นผ๊ณ ,๋ค์ ์์ ์ซ์๊ฐ ์ค๋ฉด ๋ํด์ค์ผ ํ๋ค๋๊ฒ..
๋ด๊ฐ ์๊ฐํ ๋ฐฉ๋ฒ์,
์ฐ์ ์ดํฉ๊ฒฐ๊ณผ res, ์์ํฉ sum, ์ด์ ์ pre ๋ณ์๋ฅผ ์ ์ธํ๋ค.
- ํ์ฌ์ ์ซ์๊ฐ ๋ฐ๋ก ์ด์ ์ ์ซ์์
๊ฐ์ ๋
์์ํฉ ๋ณ์sum
์ ํ์ฌ์ ๊ฐ์ ๋์ ํ์ฌ ๋ํ๋ค.- ํ์ฌ์ ์ซ์๊ฐ ์ด์ ์ ์ซ์๋ณด๋ค
ํด ๋ ('IV'๊ฐ์ ๊ฒฝ์ฐ)
ํ์ฌ ์ซ์์์sum
์ ๋บ ๊ฐ์sum
์ ์ ์ฅํ๋ค.- ํ์ฌ์ ์ซ์๊ฐ ์ด์ ์ ์ซ์๋ณด๋ค
์์ ๋ ('VI'๊ฐ์ ๊ฒฝ์ฐ)
sum
์res
์ ๋ํ๊ณsum
์ ํ์ฌ ๊ฐ์ ๋์ ํ๋ค(๋์ X).- ๋ฐ๋ณต์ด ์ข ๋ฃ๋๊ธฐ ์ ์
res
์sum
์ ๋ํ๊ณ ์ข ๋ฃํ๋ค.์์ ๊ฐ์ด ๊ณ์ฐ์ ํ๋ฉด ํด๊ฒฐ๋๋ค.
๋จธ๋ฆฌ๊ฐ ์กฐ๊ธ ์ํ ๋ค.
ํ์ง๋ง ์ฌ๋ฐ์.
class Solution(object): def romanToInt(self, s): """ :type s: str :rtype: int """ roman = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} res, pre, sum = 0, 0, 0 for i in range(len(s)): if roman[s[i]] > pre: sum = roman[s[i]] - sum elif roman[s[i]] == pre: sum += roman[s[i]] else: res += sum sum = roman[s[i]] if i == len(s) - 1: res += sum pre = roman[s[i]] return res