[프로그래머스] 소수 찾기- level1

2023. 3. 8. 12:19·Algorithm/백준 & 프로그래머스
728x90
728x90

프로그래머스 문제 중 "소수 찾기"라는 문제를 푸는데

이렇게 풀었더니 몇몇 테스트케이스에서 오류초과가 났다.

구글링을 했더니 "에라토스테네스의 체" 라는 방법을 알게 되었다.

 

"에라토스테네스의 체" 란?

범위에서 합성수를 지우는 방식으로 소수를 찾는 방법. 1. 1은 제거 2. 지워지지 않은 수 중 제일 작은 2를 소수로 채택하고, 나머지 2의 배수를 모두 지운다. 3. 지워지지 않은 수 중 제일 작은 3을 소수로 채택하고, 나머지 3의 배수를 모두 지운다. 4. 지워지지 않은 수 중 제일 작은 5를 소수로 채택하고, 나머지 5의 배수를 모두 지운다. 5. (반복)

 

 

답

def solution(n):
    answer = set(range(2,n+1))
    
    for i in range(2,n+1):
        if i in answer:
            answer -= set(range(i*2,n+1,i))
    return len(answer)

 

answer에 set()으로 2~n까지 저장하고

2~n까지 answer에 i가 있다면 i의 배수를 모두 제거한다.

그러면 2~n까지의 소수만 answer에 남아있게 된다.

answer의 개수는 len()사용해서 표현!!

728x90
728x90

'Algorithm > 백준 & 프로그래머스' 카테고리의 다른 글

[백준]15649번 N과 M(1) c/c++  (1) 2022.08.26
[백준]1629번 곱셈 c/c++  (0) 2022.08.25
[백준]1431번 시리얼 번호 (sort 함수 응용)  (0) 2022.08.16
[백준]1463번 1로 만들기 c/c++  (1) 2022.08.04
[백준]2217번 로프 c/c++  (1) 2022.08.02
'Algorithm/백준 & 프로그래머스' 카테고리의 다른 글
  • [백준]15649번 N과 M(1) c/c++
  • [백준]1629번 곱셈 c/c++
  • [백준]1431번 시리얼 번호 (sort 함수 응용)
  • [백준]1463번 1로 만들기 c/c++
성장하고픈개발자
성장하고픈개발자
방학 기념 개발블로그 작성하기
    반응형
  • 성장하고픈개발자
    꾸준히하자아자
    성장하고픈개발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (63)
      • 프로젝트 (5)
        • 카카오 쇼핑하기 web (4)
        • 요약쏙 (0)
      • Algorithm (46)
        • 백준 & 프로그래머스 (40)
        • 알고리즘 (5)
      • Web (5)
        • 네트워크 (1)
        • Spring (4)
        • JPA (0)
        • HTTP (1)
      • 후기 (3)
      • SSAFY 일상 (4)
      • 취준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 깃허브
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    신경망기초
    Spring Data JPA
    Andrew Ng
    백준
    책리뷰
    싸피 13기
    SSAFY
    일상
    그리디
    BOJ
    코딩
    C++
    쉬운딥러닝
    정렬
    스택
    DP
    싸피
    testing
    SpringBoot
    알고리즘
    백엔드
    web
    FNN
    합격수기
    PS
    Spring
    딥러닝
    네이버데이터센터각
    회고
    withmockuser
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.1
성장하고픈개발자
[프로그래머스] 소수 찾기- level1
상단으로

티스토리툴바