📌
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 만약 “t0e0a1c2h0er”에서 숫자만 추출하면 0, 0, 1, 2, 0이고 이것을 자연수를 만들면 120이 됩니다. 즉 첫 자리 0은 자연수화 할 때 무시합니다. 출력은 120를 출력하고, 다음 줄에 120 의 약수의 개수를 출력하면 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
< input example >
g0en2Ts8eSoft
✔️ code
import sys
sys.stdin=open("input.txt", "r")
s=input()
n=''
count=0 #약수 개수
for i in s:
if i >= chr(48) and i <= chr(57): #아스키코드 범위 지정
n += i
n = int(n)
print(n) #자연수
for j in range(1, n+1):
if n%j == 0:
count += 1
print(count) #약수 개수
>>>
아스키코드로 범위를 지정하여(0~9 해당) 범위 내에 있으면 str 형태로 연결해주고,
마지막에 int 형태로 바꿔주는 .. 효율적이지 못한 코드를 짰다.
머리를 짰는데 나오는게 이것 뿐이었다니 허허 전에 짠 코드에서 배운 내용을 활용하도록 노력해야겠다 !
res=0
for x in s:
#0~9 숫자면 True
if x.isdecimal():
res=res*10+int(x)
📍 a=a*10+b
반복문으로 자릿수를 하나씩 돌 때, 자연수를 만들어주는 공식 !
자주 쓰이는 것 같아서 기억하면 좋을 것 같다.
📍
isdecimal() #int 형으로 변환이 가능해야 한다.
isdigit()
isnumeric()
#문자열이 숫자로 되어있으면 True, 아니면 False 를 반환하는 함수
'알고리즘' 카테고리의 다른 글
[알고리즘] 두 리스트 합치기 (0) | 2022.01.27 |
---|---|
[알고리즘] 카드 역배치 (0) | 2022.01.27 |
[알고리즘] 회문 문자열 검사 (0) | 2022.01.24 |
[알고리즘] 점수계산 (0) | 2022.01.24 |
[알고리즘] 뒤집은 소수 (0) | 2022.01.21 |