본문 바로가기

algorithm

문자열에서 홀수인 숫자를 제곱하여 더하라

@마크다운


로켓펀치를 돌아다니다 재밌는 예제를 보았다.


```

ab2v9bc13j5jf4jv21

```

이러한 문자열이 있을 때 홀수인 숫자만 제곱하여 더한 값을 출력하라는 것이었다.


처음 봤을땐 정규식으로 숫자만 뽑고 %2하면 되겠구나 했다.


> &1 가 %2보다 월등히 빠르지가 않다. 이상하다... 파이썬이라 그런가?


아무튼 %2로 홀짝을 구분해보려다 정규식으로 홀수만 추출을 한다면 더 간단하지 않을까 해서 정규식을 열심히 찾았다.


```

def find_odd_number(text):
    result = sum([int(i) ** 2 for i in re.findall('[0-9]*[13579]', text)])
    return result

```


앞자리가 숫자인경우를 찾고 *를 사용하여 반복시켰다.


뭔가 쉬우면서도 빡치는... 재밌는 문제였다