def reverse에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return
x: 숫자
return: 뒤집어진 정수형 숫자를 반환
예들 들어,
x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321
1) 정수인 숫자를 인자로 받는다.
2) 정수는 -가 붙은 음수가 있다.
3) 1230처럼 맨 뒤에 0으로 된 숫자의 경우 321로 반환되어야 한다.
1) 리스트 요소를 거꾸로 해서 반환하는 reversed()가 있다.
2) 그런데 인자로 정수형이 들어온다.
3) 또한 - 가 있는 경우는 list 변경 시 요소의 type이 통일되지 않아 list 변경이 불가능 하다.
4) 그럼 인자를 list로 변경시킬 때 abs()로 인자를 받아 -를 없애자
5) 인자값을 list로 만든 후 for i in reversed(list)를 통해서 list를 거꾸로 만들자.
6) 1의 자리에 0이 들어오는 경우는 if문을 사용하여 인덱스 1 이후의 값만 받자.
7) 인자를 받을 때 절대값 처리를 했으므로 음수일 경우 -를 붙여 return 해준다.
def reverse(number):
number_list = list(map(str, str(abs(number))))
reverse_list = []
for i in reversed(number_list):
reverse_list.append(i)
a = int(''.join(reverse_list))
if reverse_list[0] == '0' and number != 0:
a = int(''.join(reverse_list[1:]))
if number < 0:
a=-a
return a
1) number_list.reverse()만 해도 되는데 빈 list를 선언하고 for 문을 돌리고 append하여 거꾸로 만듦...
2) int() 메소드를 사용하면 0321 같은 값들은 0이 그냥 사라진다. 그럼에도 불구하고 불필요한 if문을 사용하여 0이 앞에 있는 경우를 생성
def reverse(number):
# 여기에 코드를 작성해주세요.
if number < 0:
return -int(str(abs(number))[::-1])
else:
return int(str(number)[::-1])
위에서 짚은 문제를 명쾌하게 해결한 코드이다.
1) if number < 0 을 통해서 음수인 경우 abs()를 사용
2) str()를 통해서 string형으로 변환. str은 인덱싱과 슬라이싱이 가능
3) [::-1]을 사용하여 str 요소들의 순서를 거꾸로 바꿈
4) str값을 int()를 통해서 정수형으로 변환 후, -를 붙여 음수 값으로 변환 및 반환
5) 음수가 아닌 경우 abs()와 -를 붙이지 않고 변환