TIL80. CodeKata (6)
質問する
アルファベットを数字1~3999の間のアルファベットsに変換してパラメータとして使用する場合は、該当する数字を返します.
ローマ数字を数字としてマークします.
SymbolValueI1V5X10L50C100D500M1000
ローマ字を数字で読む方法は、左からローマ字を順番に付けます.
III = 3
XII = 12
XXVII=27.
しかし表現4の場合はIIIではなくIV
後ろの数字から前の数字を引けばいいです
9はIXです.
VとXの前に来て、4、9
XはLとCの前40,90に来る
CはD,Mの前に来て,400,900
私の答え def roman_to_num(s):
symbol = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500,'M': 1000}
result = 0
for i in range(len(s)):
if symbol[s[i]] == 5 or symbol[s[i]] ==10:
if symbol[s[i-1]] == 1:
result+=symbol[s[i]] - 2*symbol[s[i-1]]
if symbol[s[i]] == 50 or symbol[s[i]] ==100:
if symbol[s[i-1]] == 10:
result+=symbol[s[i]] - 2*symbol[s[i-1]]
if symbol[s[i]] == 500 or symbol[s[i]] ==1000:
if symbol[s[i-1]] == 100:
result+=symbol[s[i]] - 2*symbol[s[i-1]]
else:
result+=symbol[s[i]]
return result
3つのテストケースが合格したが、1つも合格しなかったので、答えを間違えた.
Reference
この問題について(TIL80. CodeKata (6)), 我々は、より多くの情報をここで見つけました
https://velog.io/@dnjs0718/TIL80.-CodeKata-6
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
def roman_to_num(s):
symbol = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500,'M': 1000}
result = 0
for i in range(len(s)):
if symbol[s[i]] == 5 or symbol[s[i]] ==10:
if symbol[s[i-1]] == 1:
result+=symbol[s[i]] - 2*symbol[s[i-1]]
if symbol[s[i]] == 50 or symbol[s[i]] ==100:
if symbol[s[i-1]] == 10:
result+=symbol[s[i]] - 2*symbol[s[i-1]]
if symbol[s[i]] == 500 or symbol[s[i]] ==1000:
if symbol[s[i-1]] == 100:
result+=symbol[s[i]] - 2*symbol[s[i-1]]
else:
result+=symbol[s[i]]
return result
3つのテストケースが合格したが、1つも合格しなかったので、答えを間違えた.Reference
この問題について(TIL80. CodeKata (6)), 我々は、より多くの情報をここで見つけました https://velog.io/@dnjs0718/TIL80.-CodeKata-6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol