๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ’ป leetcode/algorithms

[LeetCode] Algorithms | 13. Roman to Integer | Python

by ๋ฐ”์ฟ„๋ฆฌ 2024. 7. 12.

Problems

 

Thinking

์œ„์—์„œ ์ •์˜ํ•œ Symbol, Value๋ฅผ Dict๋กœ ์„ ์–ธํ•ด์ฃผ๊ณ  mapping ์‹œ์ผœ์ฃผ๋ฉด ๋˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋‹ค.

์‹ ๊ฒฝ์จ์•ผํ•  ๋ถ€๋ถ„์€

์ด๋ ‡๊ฒŒ 2๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ๋งŒ๋‚ฌ์„ ๋•Œ ์ˆซ์ž๊ฐ€ ๋ฐ”๋€๋‹ค๋Š” ์ 

ํ•˜๋‚˜ํ•˜๋‚˜ ๋ถ„๊ธฐ์ฒ˜๋ฆฌํ•ด์„œ ํ• ๊นŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ

์˜คํžˆ๋ ค ๋” ๋ณต์žกํ•˜๊ณ  ์‹œ๊ฐ„๋„ ๋งŽ์ด ์†Œ์š”๋  ๊ฒƒ์ด๋ผ ํŒ๋‹จ

 

mapping ๋˜์–ด์•ผํ•˜๋Š” dict์„ ์„ ์–ธํ•ด์ค€๋‹ค

mapping = {
    'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000,
    'IV':4, 'IX':9, 'XL':40, 'XC':90, 'CD':400, 'CM':900
    }

 

input๋˜๋Š” Roman์„ ํ•˜๋‚˜์”ฉ ์ชผ๊ฐœ์ฃผ๊ณ  ์ˆœ์„œ๋Œ€๋กœ Interger๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š”๋ฐ,

๊ทธ ๋ฐ”๋กœ ์˜†์— ์žˆ๋Š” Roman๊ณผ ํ•จ๊ป˜ ํ™•์ธํ•˜๋„๋ก ํ•ด์ค€๋‹ค.

now = 0
result = 0
num_list = list(s)

while now < len(num_list):
    if (now+1 != len(num_list)) and (num_list[now] + num_list[now+1] in mapping):
        result += mapping[num_list[now] + num_list[now+1]]
        now += 2
    else:
        result += mapping[num_list[now]]
        now += 1

return result

 

2๊ฐœ Roman์ด mapping์— ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹นํ•˜๋Š” integer๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ๋‹ค๋‹ค์Œ ์ˆซ์ž๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

์•„๋‹Œ ๊ฒฝ์šฐ์—” 1๊ฐœ์˜ Roman์„ integer๋กœ ๋ฐ”๊ฟ”์ฃผ๋„ ๋‹ค์Œ ์ˆซ์ž๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

 

์„ฑ~๊ณต