TIL48. CodeKata : 숫자 팰린드롬 판별 문제

ID짱재·2021년 10월 21일
0

CodeKata

목록 보기
2/18
post-thumbnail

🌈 숫자 팰린드롬 판별 문제



🤔 나의 Solution

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.
num: 숫자
return: true or false (뒤집은 모양이 num와 똑같은지 여부)

✔️ 예를 들어, "num = 123"가 주어진다면, False를 반환한다 뒤집은 모양이 321이기 때문이다.

✔️ "num = 1221"이 주어지면, True를 반환한다. 뒤집은 모양이 1221 이기 때문이다.

✔️ "num = 10"이 주어진다면 역시 False를 반환해야한다. 뒤집은 모양이 01 이기 때문이다.

def same_reverse(num):
    # 아래 코드를 입력해주세요.
    num = str(num)
    for i in range(len(num)//2):
      if num[i] != num[-1 - i]:   
        return False
    return True
num = -101
print(same_reverse(num))

✔️ 문제에서 정수만 주어진다고 나타나있기 때문에 음의 정수일 때는 무조건 False를 반환한다. 수를 뒤집기 위해서 str로 변환한 했을 때, 맨 앞의 -가 맨 뒤로 이동해있기 때문에 뒤집은 모양은 항상 불일치하기 때문이다.

✔️ 이에 양의 정수일 경우에만 뒤집은 수와 원래 인자로 받은 수가 일치한지 확인하여 일치하다면 True, 불일치하다면 False를 반환한다.


🤔 다른 해결 방법

def same_reverse(num):
    # 아래 코드를 입력해주세요.
    if num < 0: return False
    if str(num)[::-1] == str(num):
      return True
    else: 
      return False
num = -101
print(same_reverse(num))

✔️ 이 문제에 같은 경우에는 그냥 뒤집어서 풀어도 된당!


🤔 느낀점.

1. 원본과 뒤집은 형태가 일치하는지 확인할 때 모든 원소를 for문으로 반복할 필요가 없다.

2. 뒤집기가 필요할 때,, for문만 고집하지 말자. 슬라이싱도 핵쿨하다!

profile
Keep Going, Keep Coding!

0개의 댓글