팡세영
Log sey
팡세영
전체 방문자
오늘
어제
  • 분류 전체보기 (73)
    • PS (45)
      • programmers (13)
      • 백준 (29)
    • Android (16)
    • Daily (0)
    • Kotlin (6)
    • Design Pattern (1)
    • Java (1)
    • Flutter (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • programmers #프로그래머스
  • 해쉬맵
  • CustomView
  • 자바
  • 골드
  • BFS
  • mvvm
  • 구현
  • DFS
  • 의존성 주입
  • 정렬
  • compose
  • 프로그래머스
  • Kotlin
  • 이분탐색
  • programmers
  • 안드로이드
  • 실버
  • LEVEL2
  • flutter
  • 문자열
  • binding
  • 백준
  • TestCode
  • ArcitecturePattern
  • 하단네비게이션바
  • 완전탐색
  • 코틀린
  • Android
  • java

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
팡세영

Log sey

[프로그래머스] - 소수찾기
PS/programmers

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

2023. 2. 10. 21:52


https://school.programmers.co.kr/learn/courses/30/lessons/12921

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


[문제 풀이]

  • 해당 문제의 제한 조건을 보면 n은 2 ~ 1000000의 범위를 가진다.
  • 따라서 O(n^2)의 소수판별 알고리즘을 사용하면 시간초과로 통과하지 못한다.
  • 특정한 소수의 제곱근은 소수가 아니라는 특징을 가지고 O(n^1/2)의 시간 복잡도를 낼 수 있다.
  • 위와 같은 방법을 에라토스테네스의 체라고 한다.

[java]

class Solution {
     int arr[] = new int[10000001];

    public int solution(int n) {
        int answer = 0;

        findPrime(n);
        
        for(int i=2; i<=n; i++){
            if(arr[i] != 0) answer++;
        }
        
        return answer;
    }

    public void findPrime(int n) {
        for(int i=2; i<=n; i++) arr[i] = i;

        for(int i=2; i<=n; i++){
            if(arr[i] == 0) continue;

            for(int j=2*i; j<=n; j+=i){
                arr[j] = 0;
            }
        }
    }
}

'PS > programmers' 카테고리의 다른 글

[프로그래머스] - 미로탈출  (0) 2023.02.16
[프로그래머스] - 무인도 여행  (0) 2023.01.27
프로그래머스 - 개인정보 수집 유효기간  (0) 2023.01.18
프로그래머스 - 프렌즈 4블록  (0) 2022.08.30
Programmers - 피로도 (Java) 완전탐색  (0) 2022.08.10
    'PS/programmers' 카테고리의 다른 글
    • [프로그래머스] - 미로탈출
    • [프로그래머스] - 무인도 여행
    • 프로그래머스 - 개인정보 수집 유효기간
    • 프로그래머스 - 프렌즈 4블록
    팡세영
    팡세영
    Android, CS, PS

    티스토리툴바