728x90
반응형
Today I Learned
어떤 문제가 있었는지
알고리즘 강의를 듣고 숙제를 문제없이 풀고 해설강의를 보는데 이해안가는 부분이 발생함
이미 다 알고있다고 생각한 for문과 if문에 관련된 문제라 더 충격이였다..
내가 시도해 본 것들
input = 20
def find_prime_list_under_number(number):
answer = []
for i in range(2,number+1):
arr=[]
for j in range(1,i+1):
if i%j==0: arr.append(j)
if len(arr)==2: answer.append(i)
return answer
result = find_prime_list_under_number(input)
print(result)
주어진 수 number 이하의 수 중에서 소수를 찾는 함수를 제출하는 숙제였는데
문제없이 잘 짰다고 생각했다. 해설강의의 코드를 확인해보니 다른점이 있었다
어떻게 해결 했는지
input = 20
def find_prime_list_under_number(number):
prime_list = []
for n in range(2, number + 1):
print( 'prime_list',prime_list)
for i in prime_list:
if n % i == 0 and i * i <= n:
break
else:
prime_list.append(n)
return prime_list
result = find_prime_list_under_number(input)
print(result)
중간에 for문과 if-else문 사이의 들여쓰기가 맞지 않음에도 잘 돌아감을 확인했다.
내가 지금까지 배운 for문과 if-else문은 이렇지 않아서 의문이 갔다
확인을 해보니 for - else문이 있었다
if - else문이 if조건이 실행되지 않을 경우 else문이 실행되는것과는 달리
for문이 정상적으로 끝나면 else문이 실행된다고 한다.
그래서 위 코드의 경우 n이 i로 나누어떨어지고, i의 제곱이 n보다 작거나 같으면 약수를 갖는 수이니 break가 실행되고
else문이 작동하지 않는다
무엇을 새롭게 배웠는지
for - else문에 대해 알게 되었다
728x90
반응형