데이터 - 기본 코드 및 알고리즘 연습/Codewar
[Codewars] Double Every Other
Huin999
2021. 6. 30. 11:35
▶ 문제 :
▶ 내 답안 :
def increment_string(string):
if string == "":
return "1"
try:
if len(str(int(string)+1)) > len(string):
return str(int(string) + 1)
else:
return "0"*(len(string) - len(str(int(string)+1))) + str(int(string)+1)
except:
for i, v in enumerate(string[::-1]):
if v not in [str(x) for x in range(10)]:
break
org_str=string[:-i]
if org_str == "" :
return string + "1"
else :
org_num=string[-i:]
inc_num=str(int(org_num)+1)
if len(org_num) > len(inc_num):
return org_str + "0"*(len(org_num)-len(inc_num)) + inc_num
else:
return org_str + inc_num
▶ 모범답안 : [ list comprehension ] if, else
def double_every_other(l):
return [x * 2 if i % 2 else x for i, x in enumerate(l)]
▶ 모범답안 : 비트연산자 & 사용
def double_every_other(lst):
return [2*v if i&1 else v for i,v in enumerate(lst)]