TIL - Wecode | Code Kata . 02

한성봉·2021년 5월 29일
0

Code Kata

reverse 함수에 정수인 숫자를 인자로 받습니다.

그 숫자를 뒤집어서 return해주세요.

x: 숫자

return: 뒤집어진 숫자를 반환!

예들 들어,

x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321

🤛 나의 풀이

def reverse(number):
  a = list(str(number))
  
  if number < 0:
    a.reverse()
    b = (''.join(a))
    c = b.replace('-','')
    d = int(c) * -1
    return int(d)
  if number > 0 and a[-1] == '0':
    a.reverse()
    b = (''.join(a))
    c = b.replace('0', '')
    return int(c)
  if number >= 0:
    a.reverse()
    b = (''.join(a))
    return int(b)

print(reverse(-1234))
# 4321

우선 정수로 들어온 인자를 리스트로 바꿔 조건에 맞다면 리스트를 거꾸로 한뒤 -0같은 없애야할 부분을 지운뒤 다이 join함수로 붙여서 출력하였다.

음수 같은 경우는 지운 뒤 다시 int정수로 바뀐뒤 -1을 곱해주는 식으로 했고, 1230같은 조건은 reverse한 뒤 문자열로 붙이고 그걸 다시 정수로 바꿔주면 알아서 정수이기 때문에 0은 사라진다.

근데 조건문이 너무 많고 지저분해 보이긴한다. 근데 풀었다는 것에 너무 큰 기쁨을 느꼈다.
다른 동기분들 정답을 한번 봤는데 너무 간결했다... 대단하시다... 나도 언젠가는..

🤛 다른 풀이

def reverse(number):
  # 여기에 코드를 작''성해주세요.
  result = ''
  if number > 0:
    result = int(str(number)[::-1])
  else:
    number *= -1
    result = -1 * int(str(number)[::-1])
  
  return result

list로 변환하지 않고 string상태에서 뒤집는 index slicing을 사용하였다. [::-1] 난 사실 인덱스를 저렇게 활용하는 방법이 있는지 몰랐다. 한개 더 배운 것 같다. 원하는 인덱스를 찾거나 원하는 구간을 찾는 방법만 있는 줄 알았다..

1시간에서 1시간 30분 정도 걸렸던 것 같다. 풀고 보니 너무 간단하지만 아직은 알고리즘적 사고가 부족한 모양이다. 꾸준히 풀면서 알고리즘사고력을 늘려가야겠다. 로직을 생각하며 문제해결하는 코드카타 재밌는 것 같다.

0개의 댓글