Python: Code Taka 1주차 2

dev-swd·2020년 11월 4일
0

Code Taka

목록 보기
2/12

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

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

x: 1234
return: 4321

x: -1234
return: -4321

x: 1230
return: 321

def reverse(x):
    if x < 0:
        return int(str(x)[:0:-1]) * -1
    else:
        return int(str(x)[::-1])
  • 파이썬의 시퀀스 객체가 가지고 있는 슬라이스를 사용하여 해결하였다.
  • 임의의 iterable 객체가 있을 때 아래의 결과 값은 모두 동일하다.
st = "abcd"

print(st[0:len(st)])  # 0 부터 끝까지 (슬라이싱 연산에서 마지막 인덱스는 제외함으로)
print(st[0:])  # len(st) 는 생략 가능하다.
print(st[:])  # : 전후로 생략하면 전체 문자열을 가져온다.
print(st[::])  # 첫번 째 인덱스:마지막 인덱스:가감할 수
  • iterable 객체의 인덱스를 활용하여 값을 가져올 경우 인덱스에 마이너스(-) 값을 부여하면, iterable 객체의 가장 마지막 인덱스를 참조하게 된다.
  • 즉, -1 인덱스의 값은, len(st)-1 의 값과 같다. (인덱스는 0 부터 시작하며, len() 함수는 전체 길이를 반환함으로)

이것을 활용하여, x 로 들어온

  • 값이 양수일 때는, [::-1] 을 사용해서 처음부터 끝까지 인덱스를 -1 씩 하여 문자열을 뒤집을 수 있다.
  • 반면, 양수일 때는 [:0:-1] 을 사용하여 마이너스 기호(-) 까지 조회하지 않도록 한 후, 리턴할 때 -1을 곱하여 다시 음수로 만들었다.
  • 문제의 결과는 0이 앞에 붙어 있을 때 0을 없에주어야 하기 때문에 int() 함수를 사용하여 정수 값으로 만들어 리턴시킨다.
profile
개발을 취미로 할 수 있는 그 때 까지

0개의 댓글

관련 채용 정보