숫자인
num
을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.num: 숫자 return: true or false (뒤집은 모양이 num와 똑같은지 여부)
예를 들어,
num = 123 return false => 뒤집은 모양이 321 이기 때문
num = 1221 return true => 뒤집은 모양이 1221 이기 때문
num = -121 return false => 뒤집은 모양이 121- 이기 때문
num = 10 return false => 뒤집은 모양이 01 이기 때문
def same_reverse(num):
if num > 0:
num_str = str(num)[::-1]
return num == int(num_str)
else:
return False
def same_reverse(num):
num_rev = str(abs(num))[::-1]
return str(num) == num_rev
생각 못했던 또 다른 풀이 방법. num
의 반만 체크하는 방법.
def same_reverse(num):
# 음수여서 -가 붙어있거나, 0으로 끝나거나(10으로 나누어떨어지거나)
if num < 0 or num % 10 == 0:
return False
front = num
back = 0
# back의 자리수가 front의 자리수를 넘지 않을 때까지 (반만 보기)
while front > back:
front, mod = divmod(front, 10)
back = back*10 + mod
# (num의 자리수가 짝수일 때)front와 back이 같거나,
# (num의 자리수가 홀수일 때)back의 마지막 숫자(num의 가운데 숫자)를 뺀 것과 front가 같을 때
if front == back or back//10 == front:
return True
return False
코드가 무조건 짧은게 좋은걸까.
똑똑한 파이썬은 코드 라인 수를 줄여주지만, 과연 처리시간까지 줄여줄까.