We.TIL 번외 : 코드카타 02 - 정수를 역순으로 뽑기

김기욱·2020년 8월 4일
0

We.TIL

목록 보기
28/69

문제

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

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

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

해답

모델답안이다. 굉장히 차근차근 해결하는 방식으로 풀고 있다.
여기서는 예시를 -1234로 해서 같이 해결해보자.
1) 우선 string이란 변수를 지정해서 number(정수)를 문자열로 바꾼다.
2) 첫 번째 인수가 -(마이너스 부호)일 경우 [::-1]라는 역순으로 만들어주는 인덱스 기호를 써서 문자열을
뒤집어 준다.(참고로 이런 역배열 인덱스 기호의 경우 문자열만 뒤집을 수 있다)
3) new_string이라는 변수를 새로 만들어 뒤집힌 문자열의 마지막부호인 -을 반환하고, 문자열의 처음부터 마지막 전까지 배열을 반환한다.
주의 : 나도 까먹은 개념이였다. 인덱스범위를 지정시 예를들어 [0:-1]이면 처음부터 마지막까지 반환하는게 아니라 처음부터 마지막 '전'까지 반환한다. 마지막 인덱스는 범위에 포함되지 않는다
그러므로 new_string은 '-' + '4321'이 되어 '-4321'이라는 문자열로 반환되게 된다.
이를 int 함수를 씌워 정수형으로 다시 바꿔줘서 return하면된다.
4) number가 마이너스 정수형이 아닌경우는 이런 번거로운 과정 필요없이 [::-1]을 바로 써서 반환하면 된다.

더 간결한 해답

abs라는 절대값함수를 이용한 간결한 해답이다. abs_x라는 변수를 만들고 절대값->문자열->배열거꾸로->정수변환으로 차례차례 함수를 씌워준다. 그렇다면 abs_x는 배열이 반대로 된 정수로 나온다.
return쪽에는 조건문을 달아 number가 마이너스인 경우에 대응한다. 마이너스 정수로 input된 경우 -1을 곱해서 반환하면 마이너스 정수에도 대응할 수 있다. 그렇지 않은 경우 그대로 abs_x 변수를 반환하면 된다.

새롭게 알게된 개념

이번 코드카타를 하면서 새롭게 정리된 개념이다.
reverse(range(0:-1)) 이런식으로 보통 인덱스부호 0에서부터 시작하는 range범위를 역으로부터 출력되게 돌릴 수 있다. for문과 활용한다면 마지막 인덱스부터 체킹하는 구문을 제작할 수 있게 된다.

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글