Code Kata(Python) day 2

문제

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

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

x: 숫자

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

EX)

x: 1234
return: 4321

x: 1234
return: 4321

x: -1234
return: -4321

x: -1234
return: -4321

x: 1230
return: 321

> 내 답안

def reverse(number):
  str_number = str(number)
  
  if "-" in str_number:
    return int("-" + str_number[::-1][:-1]) 
    
  return int(str_number[::-1])

우선 파이썬 배열 [::-1] 을 사용하기 위하여 숫자를 스트링으로 만들었고

if를 사용하여 음수인 경우, 양수인 경우를 나누어 생각하였다.

우선

  • 음수
    음수인 경우 리턴 값에 -를 따로 붙여 주었는데 [::-1] 을 음수에게 사용하게 되면 마이너스 기호가 맨 마지막에 나오기 때문이다.
ex)

 -123 > 321-

그래서 이후에 [:-1] 로 슬라이싱 하여 - 기호를 제거하면서 뒤집어진 숫자만 나오게 하였다.

(1230처럼 0이 맨 마지막 숫자는 0321로 바뀌지 않고 321로 바뀜.)

WHY ? >>>>>>>>>>> 상식적으로 0321라는 숫자값은 없다. 321로 표현함

  • 양수
    양수인 경우 쉽게 문자열로 바꾼후 [::-1] 배열을 이용해 리턴

> 모범 답안

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)

내 답안이 모범 답안과 거의 비슷한거 같아 뿌듯하다ㅎㅎㅎㅎ

사실 코드카타 파트너인 승재님이 거의 푸셨지만,,,


코드카타로 파트너와 함께 문제를 풀다 보니 파트너에게 배울 점도 많고

모두가 다 다른 방식으로 접근 하는 것도 흥미롭다.

아직은 논리적으로 사고하는 것이 힘들지만

앞으로 열심히 노력해야겠다.

좋은 웹페이지 즐겨찾기