알고리즘/코드워

[python]No zeros for heros

(ㅇㅅㅎ) 2020. 11. 28. 02:04
728x90
반응형

www.codewars.com/kata/570a6a46455d08ff8d001002/train/python

 

Codewars: Achieve mastery through challenge

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

이 문제는 입력받은 수에서 숫자의 끝자리(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