Engineering Note

숫자만 추출 본문

Problem Solving/파이썬 알고리즘 문제풀이(코딩테스트 대비)

숫자만 추출

Software Engineer Kim 2021. 6. 8. 00:18

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진수를 이용하는 과정을 코드로 구현한 형태이다.

'Problem Solving > 파이썬 알고리즘 문제풀이(코딩테스트 대비)' 카테고리의 다른 글

두 리스트 합치기  (0) 2021.06.09
카드 역배치(정올 기출)  (0) 2021.06.08
회문 문자열 검사  (0) 2021.06.07
점수계산  (0) 2021.06.01
주사위 게임  (0) 2021.06.01
Comments