데이터 - 기본 코드 및 알고리즘 연습/Codewar
[Codewars] String incrementer
Huin999
2021. 6. 18. 17:44
▶ 문제 :
▶ 내 답안 :
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
▶ 모범답안 :
def increment_string(strng):
head = strng.rstrip('0123456789')
tail = strng[len(head):]
if tail == "": return strng+"1"
return head + str(int(tail) + 1).zfill(len(tail))
▶ 배워야할 부분 : strip(), lstrip(), rstrip(), zfill()
1. 종류
strip([chars]) # String의 양쪽에서 제거
lstrip([chars]) # String 왼쪽에서 제거
rstrip([chars]) # String 오른쪽에서 제거
2. 사용방법
1) 공백제거
text = " 밥은 먹고 다니니? "
print(text.lstrip()) "밥은 먹고 다니니? "
print(text.rstrip()) " 밥은 먹고 다니니?"
print(text.strip()) "밥은 먹고 다니니?"
2) 동일한문자 제거
text = "00(^___^)00000000"
print(text.lstrip('0')) "(^___^)00000000"
print(text.rstrip('0')) "00(^___^)"
print(text.strip('0')) "(^___^)"
3) 여러문자 제거
text = "::;;,,,/\/\/\debris_wisdom@tistory.com/\/\/\,,,;::"
print(text.lstrip(',.:;\/')) "debris_wisdom@tistory.com/\/\/\,,,;::"
print(text.rstrip(',.:;\/')) "::;;,,,/\/\/\debris_wisdom@tistory.com"
print(text.strip(',.:;\/')) "debris_wisdom@tistory.com