[LeetCode] Roman to Integer

CHOI YUN HOยท2021๋…„ 6์›” 29์ผ
0

๐Ÿ“ƒ ๋ฌธ์ œ ์„ค๋ช…

Roman to Integer

[๋ฌธ์ œ ์ถœ์ฒ˜ : LeetCode]

๐Ÿ‘จโ€๐Ÿ’ป ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์žฌ๋ฏธ์žˆ๋Š” ๋ฌธ์ œ..

์šฐ์„  ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ๊ฐ ๋กœ๋งˆ์ˆซ์ž์— ๋งž๋Š” ์•„๋ผ๋น„์•„ ์ˆซ์ž๋ฅผ ์ €์žฅํ–ˆ๋‹ค.

๋ฌธ์ œ๋Š” 'IV' ๋Š” 4, 'VI'๋Š” 6,,, ์ด์ฒ˜๋Ÿผ ํฐ์ˆซ์ž ์•ž์— ์ž‘์€์ˆซ์ž๊ฐ€ ์˜ค๋ฉด ํฐ์ˆซ์ž์—์„œ ๋นผ๊ณ ,๋’ค์— ์ž‘์€ ์ˆซ์ž๊ฐ€ ์˜ค๋ฉด ๋”ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š”๊ฒƒ..

๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๋ฐฉ๋ฒ•์€,

์šฐ์„  ์ดํ•ฉ๊ฒฐ๊ณผ res, ์ž„์‹œํ•ฉ sum, ์ด์ „ ์ˆ˜ pre ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค.

  1. ํ˜„์žฌ์˜ ์ˆซ์ž๊ฐ€ ๋ฐ”๋กœ ์ด์ „์˜ ์ˆซ์ž์™€ ๊ฐ™์„ ๋•Œ ์ž„์‹œํ•ฉ ๋ณ€์ˆ˜ sum์— ํ˜„์žฌ์˜ ๊ฐ’์„ ๋ˆ„์ ํ•˜์—ฌ ๋”ํ•œ๋‹ค.
  2. ํ˜„์žฌ์˜ ์ˆซ์ž๊ฐ€ ์ด์ „์˜ ์ˆซ์ž๋ณด๋‹ค ํด ๋•Œ ('IV'๊ฐ™์€ ๊ฒฝ์šฐ) ํ˜„์žฌ ์ˆซ์ž์—์„œ sum์„ ๋บ€ ๊ฐ’์„ sum์— ์ €์žฅํ•œ๋‹ค.
  3. ํ˜„์žฌ์˜ ์ˆซ์ž๊ฐ€ ์ด์ „์˜ ์ˆซ์ž๋ณด๋‹ค ์ž‘์„ ๋•Œ ('VI'๊ฐ™์€ ๊ฒฝ์šฐ) sum์„ res์— ๋”ํ•˜๊ณ  sum์— ํ˜„์žฌ ๊ฐ’์„ ๋Œ€์ž…ํ•œ๋‹ค(๋ˆ„์ X).
  4. ๋ฐ˜๋ณต์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— 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
profile
๊ฐ€์žฌ๊ฐ™์€ ์‚ฌ๋žŒ

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