반응형
checkio 문제 참고: https://py.checkio.org/mission/beginning-zeros/solve/
문제 설명: 숫자로만 구성된 string에서 앞에 연속된 '0'이 몇개인가?
EX. '0012' -> 2개 / '1000' -> 0개 / '0300' -> 1개
내 풀이
- 재귀호출 사용 (재귀호출 공부한 뒤로, 이런문제는 재귀호출로 풀게된다)
참고: 2020/09/18 - 파이썬 재귀호출로 반복문 줄이기
def beginning_zeros(number: str) -> int:
# your code here
if len(number) == 0 or number[0] != '0':
return 0
if number[0] == '0':
return 1 + beginning_zeros(number[1:])
1등 풀이
- checkio에서 가장 많은 좋아요를 받은 풀이를 보자
def beginning_zeros(number: str) -> int:
return len(number) - len(number.lstrip('0'))
한줄로 끝난다 ^^..
lstrip() 을 사용해주었는데, strip() 예제로 공백제거하는것만 봤기 때문에 인자를 넣어주면 어떻게 동작하는건지
궁금해서 찾아보았다.
strip() , lstrip() ,rstrip() 비교
1) strip -> string 시작, 끝 부분의 공백을 없애준다.
2) lstrip -> string 시작 부분의 공백을 없애준다.
3) rstrip -> string 끝 부분의 공백을 없애준다.
strip('전달인자') 로 써보면?
1) strip -> string 시작, 끝 부분의 '0' (전달인자) 를 없애준다.
2) lstrip -> string 시작 부분의 '0'(전달인자)를 없애준다.
3) rstrip -> string 끝 부분의 '0'(전달인자)를 없애준다.
다시 1등 문제풀이를 보자
return len(number) - len(number.lstrip('0'))
number = '01234' 라고 하면,
> len(number) = 5
> len(number.lstrip('0')) = 4
따라서 5-4 = 1 으로 정답이 된다.
string에 0이 총 몇 개인지 찾는 문제로 변형해보자
def all_zeros(number: str) -> int:
return len(number) - len(number.strip('0'))
lstrip('0') 을 strip('0') 으로 바꿔주기만하면 끝!!
반응형
'Today I Learned > Python & Pandas' 카테고리의 다른 글
[Python] List Comprehension (0) | 2020.10.06 |
---|---|
[Pandas] categorical columns to numeric - get dummies() (0) | 2020.09.28 |
[Python] Sort dict values in list (0) | 2020.09.27 |
[Pandas] any(),all() 사용법과 예시 (0) | 2020.09.22 |
[Pandas] column 순서 재배치하는 2가지 방법 (1) | 2020.09.15 |