Algorism/Python

숫자열만 추출하기

aoaa 2022. 3. 10. 16:08

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

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

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

▣ 입력예제 1

g0en2Ts8eSoft

▣ 출력예제 1

28 6

import sys
sys.stdin=open("input.txt", "r")
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)

먼저 숫자를 판별하는 isdigit과 isdecimal의 차이점을 비교해보겠습니다.

isdigit()

isdigit()은 해당 문자열이 '숫자'로 이루어져 있는지 검사한다.

isdecimal()

isdecimal()은 해당 문자열이 0~9까지의 수로 이루어진 것인지 검사한다. 다시 말해, int로 바로 변환할 수 있는 수인지를 검사한다. 예를 들면 3²를 isdecimal로 검사했을 때 False를 출력합니다.

 

입력한 문자열을 숫자인지 아닌지 판별하는 isdecimal() 하게 된다면

g0en2Ts8eSoft을 입력했기 때문에 28이 출력됩니다.

 이 출력된 값을 다시 반복문을 돌려 그 값이 i로 나눈 몫이 0이라면(약수) cnt를 올려주고, 그 cnt를 출력하면

숫자화된 후 약수를 출력합니다.

'Algorism > Python' 카테고리의 다른 글

격자판 최대합  (0) 2022.03.14
카드 역배치  (0) 2022.03.11
회문 문자열  (0) 2022.03.10
소수(에라토스테네스 체)  (0) 2022.03.08
자릿수의 합  (0) 2022.03.07