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