[알고리즘]숫자만 추출

김도연·2024년 1월 4일

알고리즘

목록 보기
13/56

문제

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

입력1

g0en2Ts8eSoft

출력1

28
6

[내 코드]

N=str(input())

def divisor_num(x):
    count=0
    for i in range(1,x+1):
        if x%i==0:
            count+=1
    return count
num=[]
for i in range(len(N)):
    if N[i]>='0' and N[i]<='9':
        num.append(N[i])

count=0
res=0
for i in range(len(num)):
    res+=int(num[i])*(10**(len(num)-i-1))
print(res)
print(divisor_num(res))
  1. 약수의 갯수를 구하는 함수 divisor_num정의
  2. for문을 이용해 입력값 중 숫자만 list num에 삽입
  3. num리스트를 정수형태로 변환한 후 함수 divisor_num를 이용해서 약수의 갯수 추출

[해설코드]

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)
    	

0개의 댓글