하루한줄 코딩일기

[인프런 - 파이썬 알고리즘 문제풀이] 3.2 숫자만 추출 본문

Algorithm

[인프런 - 파이썬 알고리즘 문제풀이] 3.2 숫자만 추출

jjuha 2022. 2. 7. 10:22

인프런 > 파이썬 알고리즘 문제풀이

섹션 3.2 숫자만 추출

👊 내 문제 풀이

얼마 전 풀었던 카카오 신규 아이디 추천 문제에서 공부한 정규표현식 re.sub()을 활용했다.

숫자(\d)가 아닐(^) 경우 빈 문자열로 치환하여 제거하고, 문자열이 0으로 시작하는 동안 가장 앞의 0을 제거한다.

그 후 최종 숫자와 그의 약수의 개수를 구하여 출력한다.

import re
txt = input()
cnt = 0

txt = re.sub('[^\d]','',txt)    #숫자가 아닐 경우 제거
while txt.startswith('0'):  #0으로 시작할 경우 제거
    txt = txt[1:]    
    
# txt의 약수의 개수 구하기
for i in range (1,int(txt)+1):
    if int(txt) % i == 0:
        cnt += 1
print(txt, cnt, sep="\n")

채점 결과

 

💡 강의 해답

문자열의 각 요소를 탐색하며 숫자일 경우 res 변수에 추가한다. (기존 res에 있는 수) * 10 을 한 후에 새 수를 더함으로써 마지막 자릿수에 새 수를 이을 수 있다.

s=input()
res=0
for x in s:
    if x.isdecimal():
        res=res*10+int(x)
print(res)
cnt=0
for i in range(1, res+1):
    if res%i==0:
        cnt+=1
print(cnt)
Comments