input_list = list(input()) #문자와 숫자가 섞인 문자열 입력 받음
new_list = [] #숫자만 추려서 넣는 리스트
final_list = []
start_index = 0
number = 0
def num_yaksoo(num):
cnt = 0
for i in range(1,num+1):
if (num % i == 0):
cnt+=1
print(cnt)
for i in range (len(input_list)):
#if(0 <= input_list[i] <=9): #char와 int가 섞여있으니까 이러케 단순 조건x // isdigit이라는 함수 이용하자
if input_list[i].isdigit():
new_list.append(int(input_list[i])) #append로 추가 //단, int로 변환해야함
for j in range (len(new_list)):
if(new_list[j]!=0):
start_index = j
break
#for k in range(start_index):
for k in range(start_index, len(new_list)):
final_list.append(int(new_list[k])) #정수 넣기
max_degree = len(final_list) -1
for x in range(len(final_list)):
number+= final_list[x]*pow(10,max_degree)
max_degree -=1
print(number)
num_yaksoo(number)
4. 잘못한 점
'뒤집은 소수' 알고리즘 기억 못함....
강의 코드보다 더더 길게 했다..
5. 잘한 점
예전에 배운 약수count 알고리즘 잘 활용했당
자릿수 하나하나 숫자를 가져와서, pow를 이용해서 합한 후, 하나의 자연수를 만드는 발상을 생각했다.
6. 강의 코드 + 설명
첫 자리의 0은 무시한다 ex) 0,0,1,2 -> 120
'뒤집은 소수' 알고리즘 기억했어야 함.
s = input()
res = 0
for x in s: # x = g,0,e,n,2,T, ...
print(x,end=' ') #이제, x가 숫자인지만 확인하면 됨!
if x.isdecimal() #isdecimal : 0부터 9까지만 찾아줌. #digit: 2^2, 등, 문자가 아닌 모든 숫자를 찾아줌
res=res*10 + int(x) #x는 숫자인척 하는 문자이므로, int로 형변환!
# 뒤집은 소수 알고리즘 참고
#for문이 끝나면, res는 0을 무시하고 28이 된다.
print(res)
cnt=0
for i in range(1,res+1):
if res % i == 0:
cnt +=1
print(cnt)
7. 아 맞다
리스트에 원소를 추가할 때는?
대입 연산자 '=' 가 아니라, 리스트이름. append(추가하려는 원소)!!
input()을 통해, 리스트 각각의 방에 원소를 넣을 때, 숫자를 입력했더라도, 그 숫자는 '문자' 이다.(input자체가 '문자열 입력')
따라서, int로 형변환 꼭 해줘야함!
res = 0 if x.isdecimal() res= res*10 + int(x) **기억**
-> x는 숫자인척 하는 문자이므로, int로 형변환!
# 뒤집은 소수 알고리즘 참고
8. 새로 알게된 내용
isdigit() :2^2, 등, 문자가 아닌 모든 숫자를 찾아줌
isdecimal() : 0부터 9까지만 찾아줌.
res= res*10 + int(x) **기억**
print(n, end='',sep='')
print 함수의 end 매개변수를 조정하여 행 바꿈 없이 한 줄로 읽을 수 있다.
출력을 띄어쓰지 않고 한 줄로 읽고 싶다면? - print 함수의 sep 매개변수를 활용하여 구분자를 지정할 수 있다. - sep 매개변수는 기본적으로 공백(' ')으로 설정되어 있지만, 이를 빈 문자열('')로 설정하여 출력값을 붙여서 한 줄로 읽을 수 있다.
약수 구하는 코드에서, range의 범위 잘 생각하기
for i in range(1,res+1):
if res % i == 0:
cnt +=1
print(cnt)
-> res를 i로 나누는 연산을 하고 있으므로, i는 0이 되면 안된다. 따라서, range가 1부터 시작하게 했다.
-> res +1 로 닫은 이유는, res-1까지가 아니라, res까지 포함되도록 하기 위해서..!