[Python] (문제풀이) 숫자를 뒤집어 기존과의 일치 여부 판단하기(Code Kata 1-4)

이태권 (Taekwon Lee)·2022년 6월 10일
0
post-thumbnail

"데칼코마니" (르네 마그리트, 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):
    # 아래 코드를 입력해주세요.

🤔 접근 방식

팀 답안 1

  • 숫자를 뒤집는 문제를 이미 풀어 봐서 그 문제를 풀었던 알고리즘을 그대로 가져왔다.
  • 주어진 숫자가 음수이면 - 때문에 숫자가 좌우대칭이어도 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

팀 답안 2

팀원 분의 아이디어로 한 줄로 줄일 수 있었다.

  • slicing으로 단어의 첫 단어와 끝 단어의 일치 여부를 비교한다.
  • [::-1]이기에 한 칸씩 줄어 비교하는데,
  • 계속 같으면 최종적으로 True를 반환하고
  • 중간에 다르면 False를 반환한다.
def same_reverse(num):
  return True if str(num) == str(num)[::-1] else False

보다 개선하여, return 값에 비교 연산자가 들어가면 TrueFalse를 반환하므로 아래처럼 더 간결하게 작성이 가능하다!

def same_reverse(num):
  return str(num) == str(num)[::-1]
profile
(Backend Dev.) One step at a time

0개의 댓글