revese 이용 : 가능은 하지만 버블 배열에 위배 되므로 실패
for loop : 1번만 해서는 숫자 갯수에 따라 모든 수가 배열이 되지 않는다. (회전되지 않는다.)
for loop 2회 반복 : 별그리기와 같이 가로 세로를 함께 루프하여 조건을 갖춘다. 일단 여기까지 숫자가 뒤집힌다.
숫자 뒤집는 방법 : a, b = b, a -> 이 방법이 버블 방법의 핵심.
그래서 시작을 len값 인덱스-1, 끝을 0, 그리고 하나 씩 줄어야 하므로 공차는 -1로 해준다.
정수는 음수 0 양수로 나눠진다. 따라서 음수도 또한 이 규칙을 벗어나면 안 되는데 음수는 바로 str로 바꿀 수 없다. 따라서 abs 를 사용해준다.
그러면 abs 된 값은 양의 정수가 되어서 결과도 양의 정수가 되는데?
-> 이를 방지하고자 이 원리를 쓴다.
파이썬은 정말 고맙게도 -만 붙여주면 음수가 된다. 따라서 리턴 값에 -를 붙여주어 바꿔준다.
UnboundLocalError: local variable 'new_number' referenced before assignment
모든 값이 완성되고 난 에러다. 즉 내가 만든 변수가 함수 밖에 변수를 사용하려 할 때란 뜻이다. 나는 다행히 전역변수를 만든 적이 없으므로 인덴트값을 잘 지정해준다.
def reverse(number):
if number < 0:
minus_number = abs(number)
new_number = list(map(int, str(minus_number)))
for i in range(len(new_number)-1, 0 , -1):
for j in range(i):
if j < j+1:
new_number[j], new_number[j+1] = new_number[j+1], new_number[j]
return -(int("".join(map(str, new_number))))
if number>=0:
new_number = list(map(int, str(number)))
for i in range(len(new_number)-1, 0 , -1):
for j in range(i):
if j < j+1:
new_number[j], new_number[j+1] = new_number[j+1], new_number[j]
return int("".join(map(str, new_number)))
print(reverse(-1234))
Pass.
def reverse(number):
if number < 0:
new_number = str(number).strip('-')
return (-int(new_number[::-1]))
if number >=0:
new_number = str(number)
return int(new_number[::-1])
print(reverse(1234))
단순히 0보다 크냐 안 크냐, 정수를 텍스트로 만들 수 있냐 없냐, -를 쓸 수 있냐 없냐만 얼아도 충분히 풀 수 있었다. 약 두 달 전보다 많이 성장했다.