www.codewars.com/kata/570a6a46455d08ff8d001002/train/python
이 문제는 입력받은 수에서 숫자의 끝자리(1의 자리 수)가 0이 되지 않도록 만드는 것입니다.
만약 입력받는 수가 0일 경우는 0을 반환하면 됩니다.
이 문제는 % 연산자와 // 연산자를 이용하거나 rstrip()을 이용하면 쉽게 풀 수 있습니다.
1. % 연산자와 // 연산자
% : 나누기 연산 후 나머지를 구하는 연산자입니다.
// : 나누기 연산 후 소수점 이하의 수를 버리고 정수 부분의 수만 구하는 연산자입니다. 즉, 몫을 구하는 연산자입니다.
파이썬에서는 나머지와 몫을 한 번에 구할 수 있는 divmod() 함수도 있습니다.
divmod() 함수는 다음과 같이 사용이 가능합니다.(n2는 0이 아니여야 합니다.)
a, b = divmod( n1, n2)
예를 들어서 divmod(10, 3) 일 경우 a는 3 b는 1이 됩니다.
while 문의 조건을 n%10 == 0으로 잡았는데, n이 0일 경우는 while 문을 빠져나오지 못합니다.
그래서 우선적으로 n이 0일 경우는 0을 반환해줍니다.
def no_boring_zeros(n): if n == 0: return 0 else: while n%10 == 0: n //= 10 return n |
2. rstrip()
rstrip('문자') : 인자로 전달된 문자를 오른쪽에서 제거합니다.
lstrip('문자') : 인자로 전달된 문자를 왼쪽에서 제거합니다.
strip('문자') : 인자로 전달된 문자를 왼쪽과 오른쪽에서 제거합니다.
rstrip의 경우는 문자열에서만 사용이 가능하므로 n을 str(n)으로 문자열을 취해 준 다음 rstrip을 사용합니다.
반환 시에는 다시 int('문자열')을 사용하여 integer 형으로 변형시켜줍니다.
def no_boring_zeros(n): return int(str(n).rstrip('0')) if n!=0 else 0 |
'알고리즘 > 코드워' 카테고리의 다른 글
[python]How good are you really? (0) | 2020.12.01 |
---|---|
[python]Thinkful - Number Drills: Blue and red marbles (0) | 2020.11.30 |
[python]N-th Power (0) | 2020.11.24 |
[python]Grasshopper - Grade book (0) | 2020.11.23 |
[python]Snail (0) | 2020.11.16 |