문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만
듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다.
만약 “t0e0a1c2h0er”에서 숫자만 추출하면 0, 0, 1, 2, 0이고 이것을 자연수를 만들면 120이
됩니다. 즉 첫 자리 0은 자연수화 할 때 무시합니다. 출력은 120를 출력하고, 다음 줄에 120
의 약수의 개수를 출력하면 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
▣ 입력설명
첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다.
▣ 출력설명
첫 줄에 자연수를 출력하고, 두 번째 줄에 약수의 개수를 출력합니다.
▣ 입력예제 1
g0en2Ts8eSoft
▣ 출력예제 1
28
6
s=[]
lst=[]
for i in range(0,10):
i=str(i)
s.append(i)
n=str(input())
for i in n :
if i in s:
lst.append(int(i))
if lst[0]==0:
lst.remove(lst[0])
#리스트안의 숫자들을 합친 숫자로 만들기
print(lst)
sum=0
for i in lst:
long=len(lst)
l=lst.index(i)
if l==long-1:
i=i
print(i)
else :
i=i*(10**(long-1-l))
print(i)
sum+=i
print(sum)
#약수 갯수 구하기
cnt=0
for i in range(1,sum+1):
if sum%i==0:
cnt+=1
print(cnt)
되긴 되는데 너무 길다
(원래 약수를 안구해도 되면 더 짧게 문자열로만 print해서 나타낼 수 있었는데 약수를 구해야돼서 숫자 처리 하느라)
강사님 강의 보고 오니깐 내가 놓치고 있는 것 투성이었다 ㅠㅠ 일단 is decimal이런게 있는지도 몰랐고
또 숫자 변환하는 법 까먹음 - res= res*10 + int(t)
# ****바로 숫자로 변환하는 방법****
s=input()
res=0
for x in s:
if x.isdecimal():
res=res*10+int(x)
print(res)
isdigit
알파벳이 아닌 숫자들은 다 찾아주는 것
막 2**2 이런것도 다 숫자로 인식하고 찾아줌
isdecimal
0~9까지 찾아주는 것
딱 0 1 2 3 4 5 6 .. 9 이런 형태로 되어있는 것만 찾아준다
str중에 숫자인 문자가 있을 때 isdecimal()을 사용하면 숫자(0~9)만 골라낼 수 있다.
10 이상의 숫자를 찾아야 할 경우는 isdigit()을 사용한다.
★숫자로 변환해주기★ : res=res*10 + int(x)
res=0
res=res*10+int(x)
=> 이 형태로 해주면 된당
=> 2 8 9 입력했다고 하면
res=2
res=2x10 + 8
res=28x10 +9