본문 바로가기

데이터 - 기본 코드 및 알고리즘 연습/Codewar

[Codewars] Double Every Other

▶  문제 : 

▶  내 답안 : 

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)]