[Codekata-Week1] Day 2

문성호·2020년 9월 3일

Day 2

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

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


    예들 들어,
    x: 1234 ====> return: 4321
    x: -1234 ====> return: -4321
    x: 1230 ====> return: 321

My Solution

def reverse(x):
	numArr = []
	sig = 1 
	if x < 0 : 
	  sig = -1
	  x = x*-1
  	while x != 0: 
	  numArr.append(x%10)
	  x = (int)(x/10)
	numArr.reverse()
	for i in range(len(numArr)):
	  x += numArr[i]*(10**i)
	if sig == -1: 
	  x = x*-1 
	return x
  • 내 솔루션은 매우 '원시적'이었다. C나 JAVA로 코딩하던 시절에는 필요한 메소드들을 직접 만들어서 쓰는 방식이 많았다.

  • 그러나, Python은 대부분의 메소드들을 지원하는 경우가 많았는데, 난 그걸 이해하지 못하고 간단한 Reverse함수 조차도 다 만들어서 구현했다. 그래서 코드가 다소 멀리 둘러가는 느낌이었다.

    1. 음수인지 양수인지 먼저 판단해서, 음수인 경우에는 양수로 만들어 마지막에 -1을 곱해준다.
    2. numArr에 인자로 받은 x라는 숫자를 10으로 나누면서 자릿수들을 저장한다.
      (ex. 1234면 10으로 나눈 나머지들을 4,3,2,1 이런 식으로 numArr에 저장)
    3. 그 배열을 reverse하여 다시 x에 다시 10을 곱해가면서 자릿수들을 더한다.
    4. 음수이면 -1을 곱하고 아니면 그대로 출력.

Mentor's Solution

def reverse(number):
	string = str(number)
	if string[0] == '-':
		string = string[::-1]
		new_string = string[-1]+string[:-1]
		return int(new_string)
	string = string[::-1]
	return int(string) 
  • 멘토의 솔루션은 Python의 String 메소드를 완벽하게 활용했다.

  • number를 String화 해서 양수이면 string[::-1] 처럼 List Slicing해서 역순으로 저장한 후 Int화 하여 간결하게 출력했다.

  • 음수일 경우에는 역순으로 만든다음 마지막의 부호 '-'를 앞으로 갖다붙여서 int화 시켜 출력하면 끝.

  • Python의 방식으로 사고하는 방식도 배워둘 필요가 있겠다.

profile
오늘을 모아 내일을

0개의 댓글