[CodeKata]Day2

박민하·2022년 6월 9일
0

python 문제

목록 보기
17/49
post-thumbnail

Code Kata 란, 2인 1조의 구성으로 서로 협력하여 하루에 한 문제씩 해결하는 과제입니다.


# 문제

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

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

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

예들 들어,

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

# 코드

1. 음수인 경우 -1을 곱한 뒤 역순을 구하고 다시 -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])

2. 값에 -를 바로 붙여서 return 한다.

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))

3. 변수에 할당하지 않고 바로 return 한다.

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

# 풀이 과정

  1. 숫자를 역순으로 하기 위해 slice [::-1] 를 사용해야 한다.
  2. slice 시에 int 값은 error 발생. str으로 변환이 필요하다.
  3. str으로 return시 error 발생. int로 재변환이 필요하다.
  4. 음수의 경우는 -를 따로 빼야한다.
  • -1을 곱해서 양수로 만들고 return 할 때는 다시 -1을 곱하는 방법 => 코드1 도출
  • 곱하지 않고 - 기호를 붙이면 음수가 될까? => 코드2 도출
  1. 절댓값 함수 abs()를 이용하면 -1를 곱하는 과정이 줄어든다. => 코드3 도출

# ?

이 문제를 해결할 알고리즘은 어떤 알고리즘이 있을까?


+ 그 외 코드

def reverse(number):
  new_num = str(number)[::-1]
  if number < 0:
    new_num = "-" + new_num[:-1]
  return(int(new_num))
profile
backend developer 🐌

0개의 댓글