Code Kata | day2 reverse

juri·2021년 7월 20일
0

Code Kata

목록 보기
2/15
post-thumbnail

Q. reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return해주세요.

# 예
x: 1234
return: 4321
#1차 (pass)
def reverse() :
    if number >= 0 :
        number = str(number)
        number = number[::-1]
        return int(number)
        
    else :
        number = 1- * number
        number = str(number)
        number = number[::-1]
        return int(number) * -1
        
#2차 (fail)
def reverse2() :
    return int(str(number)[::-1] * (number/abs(number))


#3차 (pass)
def reverse3() :
    if number >=0 :
        sign = 1
    else :
        sign = -1
    return int(str(number)[::-1]) * sign

☑️ 0차

문제를 보자마자 김왼손 코딩에서 봤던 역순으로 인덱스 슬라이싱하는 방법이 떠올랐다. ^^
(TIL 6월24일에 적어놨음 ~ 😁 TIL 6월24일 )

☑️ 1차

인자로 들어오는 number가 양수라면 number을 string으로 바꾼 후 역순으로 슬라이싱하면 끝나는 간단한 문제지만 number가 음수인 경우엔 -를 포함해서 역순으로 슬라이싱되기 때문에 반환값이 '4321-'의 형태가 된다.
그래서 number가 (1) 0보다 크거나 같을 때 , (2) 0보다 작을 때 로 조건을 나누어 if 문을 작성했다.
number가 0보다 작을 때는 number에 -1을 곱해서 0보다 크게 만든 후 인덱스 슬라이싱한 뒤 다시 -1을 곱해주는 방법을 선택했다.

☑️ 2차

if문에 중복되는 내용이 많아서 간단하게 정리해보기로 했다. number가 0보다 작을 때 -1을 곱하는 과정을 절대값을 사용해 number/abs(number)의 형태로 작성했다. 간결한 코드 작성이 가능하지만 number가 0일 때는 절대값을 사용할 수 없어서 다시 number가 0일 때와 0이 아닐 때를 나누어 코드를 작성해야한다는 사실을 알았다.

☑️ 3차

1차에서 if문에 중복된 내용을 return 뒤로 정리했다.
number가 0보다 크거나 같을 때는 1을 곱하는 과정을 추가해서 return에 동일하게 같은 변수인sign을 곱할 수 있도록 수정했다.

🐰 Review 🐰

일단 코드를 작성한 뒤에 코드를 분석하고 정리하는 순서만 지키면 효율적으로 알고리즘을 완성시킬 수 있다. if문은 맨 처음 조건만 다르고 그 다음 로직은 동일한 경우가 많기때문에, 조건에 따라 다른 코드만 골라내서 if문에 작성, 이후의 중복되는 부분은 동일한 로직으로 정리한 뒤 한번만 작성할 수 있도록 간결하게 정리한다.

profile
Make my day !

0개의 댓글