Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • kibana
  • Docker
  • MariaDB
  • ec2
  • enum
  • rsocket
  • 파이썬
  • 코딩테스트
  • 레포지토리
  • 코틀린 인 액션
  • grafana
  • 내림차순
  • elasticsearch
  • til
  • 에라토스테네스의 체
  • 문자열
  • SQL
  • webflux
  • 안드로이드
  • 프리코스
  • java
  • Wil
  • Android
  • 다이나믹 프로그래밍
  • 백준
  • spring
  • 프로그래머스
  • 코틀린
  • 우아한테크코스
  • kotlin

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

코딩테스트

[프로그래머스/파이썬] 소수 찾기

2022. 10. 20. 14:54

문제 설명

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)


제한 조건

  • n은 2이상 1000000이하의 자연수입니다.

입출력 예

n result
10 4
5 3

내 풀이

for j range(2, i) 까지 돌렸을 때는 시간 초과가 뜹니다.

주어진 수 이하의 소수를 구하고자 할 때, 제곱근 까지만 소수 판별을 해도 소수 판별이 가능합니다.

에라토스테너스의 체를 사용하면 더 빠르게 구현할 수 있더라구요...

나중에 구현해봐야겠습니다.

import math
def solution(n):
    cnt = 0
    for i in range(2,n+1):
        isPrime = True
        for j in range(2,int(math.sqrt(i))+1):
            if i % j == 0:
                isPrime = False
                break
        if isPrime:
            cnt+=1
    
    return cnt

 


다른 사람 풀이

에라토스테너스의 체를 파이썬스럽게 구현한 것 같습니다.

n = 10 일 때

num = (2,3,4,5,6,7,8,9,10)

i는 2부터 10까지 돌고 i 가 num 안에 있다면 if 문 내부를 수행합니다.

num-=set(range(2*i,n+1,i)) 은 num = num - set(range(2*i,n+1,i)) 입니다.

이때, range 세 개의 인자는 range(start,stop,step)를 나타냅니다.

따라서 i = 2 일 때, set(range(2*i,n+1,i)) 는 (4,8) 가 됩니다.

num에서 이를 빼면 num = (2,3,5,6,7,9,10) 이 됩니다.

이를 반복 하면 num에 남는 것은 (2,3,5,7)이 됩니다.

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)

 

[파이썬/파이썬 공부] - [파이썬] 소수 판별 '에라토스테네스의 체'

 

[파이썬] 소수 판별 '에라토스테네스의 체'

코딩테스트 연습을 하다보면 소수 판별 문제가 자주 보이곤 합니다. 저는 프로그래머스 Lv1. 소수 찾기 에서 다음과 같이 문제를 풀었는데요. import math def solution(n): cnt = 0 for i in range(2,n+1): isPri..

yeon-dev.tistory.com

 

728x90

'코딩테스트' 카테고리의 다른 글

[백준/Kotlin] 10773번 - 제로  (0) 2023.01.09
[백준/Kotlin] 9012번 - 괄호  (0) 2023.01.09
[프로그래머스/파이썬] 삼총사  (0) 2022.10.17
[프로그래머스/파이썬] 포켓몬  (0) 2022.10.12
[프로그래머스/파이썬] 2016년  (0) 2022.10.04
    '코딩테스트' 카테고리의 다른 글
    • [백준/Kotlin] 10773번 - 제로
    • [백준/Kotlin] 9012번 - 괄호
    • [프로그래머스/파이썬] 삼총사
    • [프로그래머스/파이썬] 포켓몬
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바