Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 이스케이프 문자
- 윤성우의 열혈 자료구조
- Algorithm
- Serialization
- Graph
- 혼자 공부하는 C언어
- s
- C programming
- 메모리구조
- coding test
- insertion sort
- 이것이 자바다
- list 컬렉션
- 윤성우 열혈자료구조
- Selection Sorting
- 알기쉬운 알고리즘
- buffer
- JSON
- R
- Stack
- datastructure
- stream
- C 언어 코딩 도장
Archives
- Today
- Total
Engineering Note
숫자만 추출 본문
it 취업을 위한 알고리즘 문제 풀이
문제
코드
import sys
#sys.stdin = open("input.txt","rt")
str1 = input()
num = ""
cnt = 0
for char in str1:
if ord(char)>= 48 and ord(char)<=57:
num += char
num = int(num)
for i in range(1,num+1):
if num % i == 0:
cnt += 1
print(num)
print(cnt)
import sys
#sys.stdin = open("input.txt","rt")
str1 = input()
num = ""
res = 0
cnt = 0
for char in str1:
if char.isdecimal():
res = res*10 + int(char)
for i in range(1,res+1):
if res % i == 0:
cnt += 1
print(res)
print(cnt)
문제해결방법
첫 번째 방법
문자열을 입력 받고 문자열의 문자들을 각각 char 변수에 저장하면서 저장된 char을 아스키 코드로 변환해서 문자 0에 해당하는 48이상 9에 해당하는 57 이하면 문자열 연산을 통해 num에 저장했다.
저장된 num은 문자열이므로 int로 형변환 해주고 1부터 num 까지 num을 나누어 보면서 나누어 떨어지면 cnt를 1씩 증가시켰다.
두 번째 방법
- 파이썬의 함수 문자.isdecimal() 함수를 이용해서 10진수 숫자인지 확인하고 10진수 숫자라면 숫자로 변수에 저장했다.
- 숫자 저장 방법은 res = res * 10 + int(char) // res 초기값 0
- 숫자 변환 과정은 char에 2,3,4라는 문자가 넘어오면 2부터 순서대로 숫자로 형변환을 하고 0+2를 해서 res에 2가 저장되고 3이 넘어오면 2*10 + 3을 해서 23이 되고 4가 넘어오면 23*10 + 4를 해서 234가 된다.
- 이 과정은 우리가 자리수마다 10배씩 증가하는 10진수와 위치 기수법을 이용한 0과 9의 숫자를 자리수마다 10진수를 이용하는 과정을 코드로 구현한 형태이다.
- 파이썬의 함수 문자.isdecimal() 함수를 이용해서 10진수 숫자인지 확인하고 10진수 숫자라면 숫자로 변수에 저장했다.
'Problem Solving > 파이썬 알고리즘 문제풀이(코딩테스트 대비)' 카테고리의 다른 글
두 리스트 합치기 (0) | 2021.06.09 |
---|---|
카드 역배치(정올 기출) (0) | 2021.06.08 |
회문 문자열 검사 (0) | 2021.06.07 |
점수계산 (0) | 2021.06.01 |
주사위 게임 (0) | 2021.06.01 |
Comments