프로그래머스/Python
[프로그래머스] 소수찾기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 25. 14:56
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
- 소수를 찾아 저장할 리스트를 생성한다. li = list()
- 소수의 시작인 1부터 시작하여 입력받은 수 사이에서 소수를 찾는다. for i in range(2, n + 1)
- 수를 일단 리스트에 추가한다. li.append(i)
- 소수인지 판별할 때는 2부터 자기 이전까지 수 중 모두 나누어 떨어지지 않으면 그 수는 소수이다. 하지만 이렇게 판별하게 되면 많은 시간이 소요된다.
- 이때 판별하는 수의 제곱근을 구하여 해당 제곱근 이전의 정수까지 나누어 봤을 때 나누어 떨어지지 않는다면 해당 수는 소수라고 할 수 있다.
- 하여 2부터 해당 수의 제곱근을 반올림한 결과까지 반복하며 for j in range(2, round(i ** 0.5) + 1)
- 해당 수가 나누어 떨어지면 if (i % j == 0)
- 소수가 아니므로 추가했던 수를 제거한다. li.pop()
- 소수가 아닌 것으로 판별되었으므로 판별을 종료한다. break
- 소수를 모두 찾았으면 해당 개수를 저장한다. answer = len(li)
반응형
3. 소스코드
def solution(n):
answer = 0
li = list()
for i in range(2, n + 1):
li.append(i)
for j in range(2, round(i ** 0.5) + 1):
if (i % j == 0):
li.pop()
break
answer = len(li)
return answer
728x90
반응형