Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- tensorflow
- 코딩테스트
- 데이터분석
- Product Demand
- ModelCheckPoint
- HackerRank
- eda
- 프로그래머스
- Gaimification
- kaggle
- 신경쓰기의 기술
- SQL
- MySQL
- SKU Consolidation
- ProfileReport
- TensorFlowGPU
- Labor Management System
- 웨어하우스 보관 최적화
- ABC Analysis
- 파이썬
- forecast
- 코딩테스트연습
- 딥러닝
- MS SQL Server
- leetcode
- 피그마인디언
- pandas profiling
- oracle
- 당신의 인생이 왜 힘들지 않아야 한다고 생각하십니까
- Inventory Optimization
Archives
- Today
- Total
오늘도 배운다
소수 찾기 / 프로그래머스, 파이썬 코딩테스트 연습 연습문제 본문
문제
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.(1은 소수가 아닙니다.)

제출답안
def solution(n):
def is_primeN(n):
"""
소수 탐지 함수
@param n: int
return 0 or 1
"""
output = 1 # 기본값(True)
for num in range(2, int(n**0.5)+1):
# 1과 주어준 수의 제곱근 사이에 약수가 하나라도 있으면 소수가 아니다.
if not n % num:
output = 0
break
return output
# 2 이상의 홀수만 대상으로 체크 (2 이상의 짝수는 소수가 아니다)
ls_odd = [num for num in range(2, n+1) if num%2]
# 솟수 점검범위: 2, 그 이상의 홀수
answer = 1 + sum([1 for num in ls_odd if is_primeN(num)])
return answer
다른사람 풀이
에라토스테네스의 체라는 소수를 찾는 방법이 있었다
그리고 성능이 상상을 초월했다.
해당 코드는 아래와 같다.
def solution(n):
num=set(range(2,n+1))
for i in range(2,n+1):
if i in num:
num-=set(range(2*i,n+1,i))
return len(num)


다른 사람의 풀이를 개선
위 코드에서 숫자를 확인하는 경우의 수를 줄이는 것으로 마무리지었다.
추후에, 더 개선시켜보는 것으로
아래가 최종 코드와 그 결과물이다
def solution(n):
num= set(range(3,n+1, 2))
for odd in range(3,n+1, 2):
if odd in num:
num-=set(range(2*odd,n+1,odd))
answer = len(num)+1
return answer

문제 바로가기
728x90
'코딩테스트연습(파이썬)' 카테고리의 다른 글
| 옹알이 (2) / 프로그래머스, 파이썬 코딩테스트 연습 연습문제 (0) | 2022.12.12 |
|---|---|
| 이상한 문자 만들기 / 프로그래머스, 파이썬 코딩테스트 연습 연습문제 (0) | 2022.12.11 |
| 2016년 / 프로그래머스, 파이썬 / 코딩테스트 연습 연습문제 (0) | 2022.12.06 |
| 시저 암호 / 프로그래머스, 파이썬 코딩테스트 연습 연습문제 (0) | 2022.12.06 |
| 완주하지 못한 선수 / 프로그래머스, 파이썬 코딩테스트 연습 해시 (0) | 2022.12.05 |
Comments