-
section3.2 숫자만 추출알고리즘 2022. 10. 25. 19:17
문자와 숫자가 섞여있는 문자열이 주어지면 그중 숫자만 추출하여 그 순서대로 자연수를 만 듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 만약 “t0e0a1c2h0er”에서 숫자만 추출하면 0, 0, 1, 2, 0이고 이것을 자연수를 만들면 120이 됩니다. 즉 첫자리 0은 자연수화할 때 무시합니다. 출력은 120을 출력하고, 다음 줄에 120의 약수의 개수를 출력하면 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
# 아스키코드 확인해서 이용하기 # 65 ~ 90, ord("A") # 97 ~ 122, ord("a") # 48 ~ 57 import sys #sys.stdin = open("input.txt", "rt") n = input() num = '' def divisorNum(x): cnt = 0 for i in range(1, x+1): if (x % i == 0): cnt += 1 return cnt for i in range(len(n)): if 48 <= ord(n[i]) and ord(n[i]) <= 57: num += n[i] num = int(num) print(num) print(divisorNum(num))
아스키코드를 이용해서 풀었고 정답이었다
import sys #sys.stdin = open("input.txt", "rt") s = input() res = 0 cnt = 0 for x in s: if x.isdecimal(): res = res*10 + int(x) print(res) for i in range(1, res+1): if res%i==0: cnt += 1 print(cnt)
isdecimal 이라는 함수를 이용하면 아스키코드를 없이도 가능하다
파이썬 isdecimal
isdigit() 함수는 글자가 숫자 모양이면 무조건 True 반환
isdecimal() 함수는 주어진 문자열이 int형으로 반환 여부를 알아내는 함수이기 때문에 특수문자 중 숫자모양은 숫자가 아니다
그렇게 중요한 것 같지는 않지만... 숫자인지 확인할 때는 편리한 것 같다
파이썬 decimal 모듈
십진법 모듈에서는 Decimal 이용하면 실수로 표현 가능하다
Decimal의 value로는 정수, 문자열, 튜플, decimal 객체를 인자로 받아 생성된다
https://m.blog.naver.com/dudwo567890/130165293039
(decimal에 대해 찾다보니 추가)
decimal > 고정소수점 > 정수와 소수를 표현하는 비트 수를 미리 정하고 이에 맞춰 표현
float > 부동소수점 > 10진수를 2진수로 변환한 다음에 정규화
decimal은 메모리를 많이 사용하여 정확성을 향상한다
상황에 맞게 float과 decimal 사용
728x90'알고리즘' 카테고리의 다른 글
section3.4 두 리스트 합치기 (0) 2022.10.26 section3.3 카드 역배치 (0) 2022.10.26 section3.1 회문 문자열 검사 (1) 2022.10.25 section2.10 점수 계산 (1) 2022.10.25 section2.9 주사위 게임 (0) 2022.10.25