[Codekata] Week1 - Day2 (feat. abs(), divmod)

Jungmin Seo·2021년 6월 22일
0

Codekata

목록 보기
2/10

🍔 문제

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

x: 숫자
return: 뒤집어진 숫자를 반환!

예들 들어,

x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321



🍟 풀이

#1 내 풀이

잘 모르겠어서, 일단 돌아가게만 풀었더니 중복이 너무 많다.
똑똑한 파이썬을 잘 이용하지 못하고 있다. 똑똑한 파이썬으로 미련하게 풀고 있다😂

def reverse(number):
  
  number = str(number)
  a = ''
  n=-1

  if int(number) < 0 :
    number = number[1:]
    while -n <= len(number):
      a += number[n]
      n += -1

    return -int(a)

  else:
    while -n <= len(number):
      a += number[n]
      n += -1

    return int(a)

#2

생각지도 못한 abs()를 이용한 깔끔한 풀이, 오늘도 하나 배워간다,,

🌮 abs(number) number의 절댓값을 반환

def reverse(number):
  a = str(abs(number))[::-1]
  if number < 0:
    return int(a) * (-1)
  else:
    return int(a)

#3

신세계의 접근방법! divmod를 이용한 풀이.

🌮 divmod(a, b) a를 b로 나눈 몫과 나머지 2개의 값을 반환

def reverse(number):
  sign = -1 if number < 0 else 1
  number = abs(number)
  result = 0

  while number != 0:
    number, mod = divmod(number, 10)
    result = result * 10 + mod
    
  return result * sign
profile
Hello World!

0개의 댓글