코딩한걸음
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
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!