๐ฅ Code-kata week2-1
p.s. 2์ฃผ์ฐจ๋ ์๋ก์ด ๋๊ธฐ์ ํจ๊ป ํ๋ค!
๋ฌธ์
๋ก๋ง์์์ ์ซ์๋ก ๋ฐ๊พธ๊ธฐ 1~3999 ์ฌ์ด์ ๋ก๋ง์ s๋ฅผ ์ธ์๋ก ์ฃผ๋ฉด ๊ทธ์ ํด๋นํ๋ ์ซ์๋ฅผ ๋ฐํํด์ฃผ์ธ์.
๋ก๋ง ์ซ์๋ฅผ ์ซ์๋ก ํ๊ธฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
๋ก๋ง์๋ฅผ ์ซ์๋ก ์ฝ๋ ๋ฐฉ๋ฒ์ ๋ก๋ง์๋ฅผ ์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋๋ก ๋ํ๋ฉด ๋ฉ๋๋ค. III = 3 XII = 12 XXVII = 27์ ๋๋ค.
๊ทธ๋ฐ๋ฐ 4๋ฅผ ํํํ ๋๋ IIII๊ฐ ์๋๋ผ IV ์ ๋๋ค. ๋ค์ ์ซ์์์ ์์ ์ซ์๋ฅผ ๋นผ์ฃผ๋ฉด ๋ฉ๋๋ค. 9๋ IX์ ๋๋ค.
I๋ V์ X์์ ์์ 4, 9 X๋ L, C์์ ์์ 40, 90 C๋ D, M์์ ์์ 400, 900.
ํ์ด
์ผ๋จ ์ธ์๋ ๋ก๋ง์์ ์กฐํฉ์ด๊ณ , return๊ฐ์ ์ซ์์ ํฉ์ด์ด์ผ ํ๋ค.
๊ฒฐ๊ตญ ๋ก๋ง์ > ๊ฐ ๋ก๋ง์์ ์ง๊ฟ๊ฐ์ผ๋ก ๋ณํ > ์ฐ์ฐ์ ์์๋ก ์ด๋ค์ ธ์ผ ํ๋ค.
์ฝ๋ฉ์ ์๋์ ๊ฐ์ด ์์ฑํ์๋ค.
def roman_to_num(s):
#๋ก๋ง์ - ์ซ์ dictionary
my_dict = {"I":1,"V":5, "X":10, "L":50, "C":100, "D":500, "M":1000}
#์ธ์์ธ ๋ก๋ง์ ๋ฌธ์์ด์ ์ชผ๊ฐ์ chr_list์ ๋ด๋๋ค
chr_list = []
for chr in s:
chr_list.append(chr)
#์ชผ๊ฐ ๋ฌธ์์ด์ value๊ฐ์ list์ ๋ด๋๋ค
value_list = []
for chr in chr_list:
value_list.append(my_dict[chr])
#์ต์ข
์ซ์๋ฅผ ๋ด์ reulst (list) ์ ์ธ
result = []
#๋ง์ง๋ง ์์๊น์ง ๋๋ฉด for๋ฌธ ์ค๋จํด์ผ ํ๋ฏ๋ก, ์ต๋๊ฐ(์ต์ข
index) ๋ฏธ๋ฆฌ ์ ์ธ
max_length = len(value_list)
for i in range(0,max_length):
#๋ง์ง๋ง ๋ฌธ์๊น์ง ๋์์ผ๋ฉด, ์ข
๋ฃ
if i+1 >= max_length:
result.append(value_list[i])
break
#์์๋ฆฌ์๊ฐ ๋ ์์ผ๋ฉด ์์๋ก ๋ณ๊ฒฝ
if value_list[i]<value_list[i+1]:
value_list[i] = -value_list[i]
result.append(value_list[i])
#์์๋ฆฌ์๊ฐ ๋ ํฌ๋ฉด ์์ ๊ทธ๋๋ก append
else:
result.append(value_list[i])
return sum(result)