Algorithm/탐색 & 시뮬레이션

숫자만 추출 -python

눈오는1월 2023. 7. 14. 00:33
728x90

<문제>

문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만 듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다.
만약 “t0e0a1c2h0er”에서 숫자만 추출하면 0, 0, 1, 2, 0이고 이것을 자연수를 만들면 120이 됩니다.즉첫자리0은자연수화할때무시합니다. 출력은120를출력하고,다음줄에120 의 약수의 개수를 출력하면 됩니다.

추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.

 

입력설명
첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다.

출력설명
첫 줄에 자연수를 출력하고, 두 번째 줄에 약수의 개수를 출력합니다.

입력예제 1

g0en2Ts8eSoft

출력예제 1

28
6

 

 

 

<코드>

s = input()
size = len(s)
z=''
for i in range(size): # for x  in s: 이렇게도 가능 
    if s[i].isdigit() : # 문자열에서 isdigit을 이용해서 정수만 뽑아낼 수 있음
        z += s[i]
z= z.lstrip("0") # lstrip을 활용해서 앞에 있는 0을 지워버림
z= int(z)  
print(z)
cnt = 0
for i in range(1,z+1):
    if z % i == 0:
        cnt += 1
print(cnt)


"""
첫자리 0 무시하는 다른 방법
res=0
for x in s:
    if x.isdecimal():
        res=res*10+int(x) -> 이런식으로 하면 0 없앨 수 있음
"""
728x90