문제 제목: 숫자만 추출
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만 듭니다.
만들어진 자연수와 그 자연수의 약수 개수를 출력합니다.
만약 “t0e0a1c2h0er”에서 숫자만 추출하면 0, 0, 1, 2, 0이고 이것을 자연수를 만들면 120이 됩니다.
즉 첫 자리 0은 자연수화 할 때 무시합니다. 출력은 120를 출력하고, 다음 줄에 120 의 약수의 개수를 출력하면 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
▣ 입력설명
첫 줄에 숫자가 썩인 문자열이 주어집니다.
문자열의 길이는 50을 넘지 않습니다.
▣ 출력설명
첫 줄에 자연수를 출력하고, 두 번째 줄에 약수의 개수를 출력합니다.
▣ 입력예제
g0en2Ts8eSoft
▣ 출력예제
28 6
나의 풀이
s = input()
arr = ''
for i in s:
if i.isnumeric() == True:
arr += i
arr = int(arr)
cnt = 1 #자기자신을 약수로 취하는 것 미리 저장
for i in range(1,arr//2 +1 ): #효율을 높이기위해 arr//2 +1까지
if arr % i == 0:
cnt += 1
print(arr)
print(cnt)
문자를 저장해서 숫자값이 true인 경우 문자열에 해당 수를 저장한다.
그 뒤 int로 바꿔주었다.
모범답안
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)
.isdecimal() 는 십진수를 표현하는 문자를 참거짓 판별해준다.
모범답안은 수학식을 이용해서 숫자만 추출하도록 하였다.
'coding test - python > 기본기 문제' 카테고리의 다른 글
문제 / 카드 역배치 / Python (0) | 2022.04.04 |
---|---|
문제 / 두 리스트 합치기 / Python (0) | 2022.04.04 |
문제 / 회문 문자열 검사 / Python (0) | 2022.04.01 |
문제 / 점수계산 / Python (0) | 2022.03.31 |
문제 / 주사위 게임 / Python (0) | 2022.03.31 |