[python] Code Kata Day 4

지원석·2021년 12월 19일
0

TIL

목록 보기
7/8

코트가타에서 주목할 만한 문법 하나를 남겨놓으려고 한다!

숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환해주세요.
num: 숫자
return: true or false (뒤집은 모양이 num와 똑같은지 여부)
예를 들어,
num = 123
return false
=> 뒤집은 모양이 321 이기 때문
num = 123
return false
=> 뒤집은 모양이 321 이기 때문
num = 1221
return true
=> 뒤집은 모양이 1221 이기 때문
num = 1221
return true
=> 뒤집은 모양이 1221 이기 때문
num = -121
return false
=> 뒤집은 모양이 121- 이기 때문
num = -121
return false
=> 뒤집은 모양이 121- 이기 때문
num = 10
return false
=> 뒤집은 모양이 01 이기 때문

위와 같은 문제가 주어졌는데, 이 문제를 보고 떠올려야 하는 것이 '맨 앞과 맨 뒤를 비교를 해주고 싶다' 이다.

맨 앞과 맨 뒤를 비교해야 하는 문법을 쓸 일을 상당히 많을 것 같아 이 방식을 적어보려고 한다.

<내가 짠 코드>

def same_reverse(num):
  a = str(num)
  b = len(a)
  for i in range(b // 2):
    if a[i] == a[-1 - i]:
      pass
    else:
      return False
  return True

이렇게 코드를 짰고 답은 잘 나온다.

여기서 포인트는 두 가지인데,
1) (b//2) : 정수 부분만 구해주는 나누기를 쓰는 것
2) a[i] 와 a[-1-i] : 맨 앞과 맨 뒤를 뽑아내는 인덱싱 방법!

위의 문제에서는 num을 string으로 바꿔준 후 이것의 길이를 2로 나누어 정수만 남기어 for loop을 돌리는 것이다. 2로 정수만 남도록 나눠주는 이유는 string의 반까지 loop를 돌리려는 것이다.

0개의 댓글