알고리즘/인프런: 파이썬 알고리즘 문제풀이
탐색&시뮬레이션 문제 #2. 숫자만 추출
bearbrick
2022. 5. 27. 14:34
*이 풀이는 인프런: 파이썬 알고리즘 문제풀이 강좌에 기반하였습니다.
내 풀이
1. 입력 받은 문자열에서 숫자를 찾아내서, 숫자만 따로 저장한다.
2. 숫자에서 앞의 '0'을 제거하기 위해서 문자열 내장함수 lstrip()을 사용한다.
3. 위에서 구한 숫자의 약수를 구하는데, 1과 자기자신은 무조건 약수이므로 cnt를 2로 초기화하고, 2부터 약수를 찾아나간다.
import sys
#sys.stdin=open("input.txt","rt")
s=input()
num=""
cnt=2
for x in s:
if '0'<=x<='9':
num+=x
num=int(num.lstrip('0'))
print(num)
for i in range(2,num):
if num%i==0:
cnt+=1
print(cnt)
강사님 풀이
import sys
sys.stdin=open("input.txt","rt")
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)
배운 점
1. 문자열을 숫자로 변환할 때, 맨 앞자리의 0을 제거하고 싶다면,
res=0
res=res*10+x
위와 같은 식을 사용하자.
2. 문자열 내장함수 isdecimal( )은 문자열이 '0'~'9'까지의 숫자 형태로 이루어져있는지 판별한다.
isdigit( )는 문자열이 2^10과 같이 모든 숫자 형태를 포함해서 숫자 형태로 이루어져있는지 판별한다.