Codecata ⎜ 숫자 reverse 하기

codecata 숫자 reverse 함수

문제

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

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

예들 들어, x: 1234 return: 4321

x: -1234 return: -4321

x: 1230 return: 321

내가 한 풀이

def reverse(x):
    minus = False

    if x < 0:
        minus = True
        x *= -1

    str_x = str(x)
    reverse_x = ""
    for charactor in str_x[::-1]:
        reverse_x += charactor

    if minus == True:
        return -1 * int(reverse_x)
    else:
        return int(reverse_x)

print(reverse(0))

코드카타 파트너 풀이(두연님)

두연님은 string말고 숫자로 계산해서 reverse를 하셨다. x=1234 라면 1x10^3 + 2x10^2 + 3x10^1 + 4x10^0 으로 생각하고, % 를 써서 나머지를 whilte 반복문을 통해 새로운 변수 result에 넣는 방법이다.

def reverse(x):
  minus = False
  result = 0
  if x < 0:
    minus = True
    x *= -1
  while x > 0:
    result = (result * 10) + x % 10
    x = x//10
  if minus:
    return result * -1
  else:
    return result
print(reverse(1230))

위코드 풀이

오로지 string으로만 접근해서 풀었다. 난 -값을 접근하려고 x < 0을 사용했지만 - 또한 파이썬에선 string으로 접근할 수가 있었다. (if string[0] == ‘-‘:)

def reverse(number):
	string = str(number)
	if string[0] == '-':
		string = string[::-1]
		new_string = string[-1]+string[:-1]
		return int(new_string)
	string = string[::-1]
	return int(string) 

댓글남기기