[Python] (문제풀이) 주어진 정수의 순서를 반대로 반환하기(Code Kata 1-2)

이태권 (Taekwon Lee)·2022년 6월 8일
0
post-thumbnail

❓ 문제

reverse 함수에 정수인 숫자를 인자로 받습니다.
그 숫자를 뒤집어서 return 해주세요.

x: 숫자
return: 뒤집어진 숫자
def reverse(number):
  # 여기에 코드를 작성해주세요.

예시

x: 1234
return: 4321
x: -1234
return: -4321
x: 1230
return: 321

🤔 접근 방식

순서도

  1. 주어진 numberstr()를 통하여 문자열로 바꿔준다
  2. [::-1]으로 slicing 하여 반대로 출력한다.
  3. int()으로 문자열을 다시 정수형으로 바꾸어 준다.
  4. 순서가 뒤바뀐 정수를 반환한다.

⚠️ 예외 조건

  1. 음수일 경우 -1을 곱하여 양수로 바꾸어 준다.
  2. 위의 접근 방식 2~3번을 반복한다.

❗️ 답안

1. 초기 팀 답안

def reverse(number):
  if number < 0:
    number *= -1
    new_number = int(str(number)[::-1])
    new_number *= -1
    return new_number
  else:
    return int(str(number)[::-1])

# 예시 및 출력
num1 = -1230
print(reverse(num1))

2. 개선된 팀 답안

코드 수를 줄이기 위해 아래와 같이 바꾸었다.

음수인 예외 조건을 return 안에 압축하여 한 줄로 축약했다.

def reverse(number):
  if number < 0:
    return -int(str(abs(number))[::-1])
  else:
    return int(str(number)[::-1])

3. 다른 답안

우리 팀의 답안과는 다른 방식으로 slicing을 진행하였다.

  1. 문자열로 바꾼 것까지는 똑같다.
  2. -1 를 곱하지 않고 문자열 상태에서 맨앞에 -를 추가한다.
  3. 문자열의 끝에서 두 번째 자리까지 slicing하여 맨끝의 -를 제거한다.
  4. 문자열을 정수형으로 바꾸어 리턴한다.
def reverse(number):
  new_num = str(number)[::-1]
  if number < 0:
    new_num = "-" + new_num[:-1]
  return(int(new_num))

🔖 참고 자료

profile
(Backend Dev.) One step at a time

0개의 댓글