"데칼코마니" (르네 마그리트, 1966)
숫자인 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):
# 아래 코드를 입력해주세요.
- 숫자를 뒤집는 문제를 이미 풀어 봐서 그 문제를 풀었던 알고리즘을 그대로 가져왔다.
- 주어진 숫자가 음수이면
-
때문에 숫자가 좌우대칭이어도False
이므로 모두False
로 처리했다.- 양수일 때, 만약 뒤집은 숫자가 기존과 같으면
True
를- 다르면
False
로 반환하였다.
def reverse(number):
if number < 0:
number *= -1
new_number = -int(str(number)[::-1])
return new_number
else:
return int(str(number)[::-1])
def same_reverse(num):
rev_num = reverse(num)
if num < 0:
return False
if num == rev_num:
return True
elif num != rev_num:
return False
팀원 분의 아이디어로 한 줄로 줄일 수 있었다.
slicing
으로 단어의 첫 단어와 끝 단어의 일치 여부를 비교한다.[::-1]
이기에 한 칸씩 줄어 비교하는데,- 계속 같으면 최종적으로
True
를 반환하고- 중간에 다르면
False
를 반환한다.
def same_reverse(num):
return True if str(num) == str(num)[::-1] else False
보다 개선하여, return
값에 비교 연산자
가 들어가면 True
와 False
를 반환하므로 아래처럼 더 간결하게 작성이 가능하다!
def same_reverse(num):
return str(num) == str(num)[::-1]