programmers- lv.1 (소수찾기)

이예송·2023년 7월 14일

PS

목록 보기
33/97

문제링크: 소수찾기

✍🏻 Information

content
언어python
난이도⭐️
풀이시간10분
제출횟수2
인터넷검색유무no




🍒 My Code

def isPrime(num):
    #if num==1:
        #return False
    for i in range(2,int(num**0.5)+1): 
        if num%i==0:
            return False
    return True

def solution(n):
    answer = 1 #짝수중 2만 유일하게 소수이기 때문에 더해줌(n>=2)
    for i in range(3,n+1,2): #홀수만 계산
        if isPrime(i)==True:
            answer+=1
    return answer




💡 What I learned

  • 처음에 isPrime 함수 for문에서 range를 (2,num)으로 했더니 시간초과에 걸렸다. 그래서 isPrime 함수 for문 수정하고 solution 함수에서도 홀수만 계산하도록 for문 range를 바꿨다.
  • 좋다고 생각한 풀이
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)

-> num에서 자신의 배수를 다 빼는 형식

0개의 댓글