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