Algorithm

[프로그래머스] Level1 | 소수 찾기 - 파이썬(Python) | 연습문제

토오오끼 2021. 11. 13. 00:06
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/12921

 

코딩테스트 연습 - 소수 찾기

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상

programmers.co.kr

프로그래머스에서 level 1 연습문제 소수찾기 문제를 풀었다.

레벨1이라고 만만하게 봤다가 진짜진짜 겨우 풀었다 ㅋㅋ..


소수찾기는 '에라토스테네스의 체' 라는 방법으로 구현을 할 수 있다고 한다.

나 이관데.. 왜 에라토스테네스의 체가 낯선지 모르겠다... 🤦‍♀️에라토스테네스의 체를 이해해도 이를 코드로 구현하는 건 정말 어려웠고 결국 구글링의 힘을 빌려 겨우 해결했다.

 

참조한 에라토스테네스의 체를 파이썬으로 구현한 코드 : https://wikidocs.net/21638

 

2. 소수 구하기 - 에라토스테네스의 체

# 소수 : 1과 그 수 자신 이외의 자연수로는 나눌 수 없는 자연수이다. # 코딩 소수인지 검사하는 함수(isPrime)를 만든다. 1부터 100 사이의 소수를 구하는 ...

wikidocs.net

출처 : https://wikidocs.net/21638

위의 설명을 코드로 구현하면 아래와 같다.

def solution(n) :
    
    a = [False,False] + [True]*(n-1)
    print(a)
    
    primes=[]

    for i in range(2,n+1):
        if a[i]:
            primes.append(i)
            for j in range(2*i, n+1, i):
                a[j] = False
    print(a)
    print(primes)
    return len(primes)

이 코드로 소수를 찾아낸다는게 너무 신기해서 중간중간 print로 찍어봤는데 print 결과물은 아래와 같다.

n이 5일 때와 10일 때 각각 프린터하면 나오는 결과물이다.

 

 

소수찾기는 종종 쓰이는 것 같아서 잘 기억해두고 있어야겠다.. (진짜!!!!!!)

이해를 못하면 통암기라도 해야한다고 생각한다!


해당 문제 풀이 코드

 

GitHub - YOOHYOJEONG/algorithm_practice: 알고리즘 공부 및 코딩테스트 준비

알고리즘 공부 및 코딩테스트 준비. Contribute to YOOHYOJEONG/algorithm_practice development by creating an account on GitHub.

github.com

 

728x90
반응형