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

2023. 4. 16. 18:15·알고리즘/알고리즘 풀이
반응형

 

프로그래머스

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

programmers.co.kr

 

CODE(기본)

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        boolean flag = true;
        for(int i = 2; i <= n; i++) {
            flag = true;
            if(i != 2 && i % 2 == 0) continue;
            for(int j = 2; j <= Math.sqrt(i); j++) {
                if(i % j == 0) {
                    flag = false;
                    break;
                }
            }
            
            if(flag) answer++;
        }
        return answer;
    }
}

2 ~ i의 제곱근까지 반복하며, 나누어 떨어지면 소수가 아니다. 쉽게 생각할 수 있는 i는 3, i+=2 조건으로 반복문을 돌리면 시간초과가 나며 통과가 되지 않는다.

 

CODE(에라토스테네스의 체)

class Solution {
    public int solution(int n) {
        int answer = 0;
        boolean[] check = new boolean[n+1];
        check[0] = check[1] = false;
        
        for(int i=2; i<=n; i++) check[i] = true;
        
        for(int i=2; i<=Math.sqrt(n); i++) {
            if(!check[i]) continue;
            for(int j = i; i*j<=n; j++) check[i*j] = false;
        }
        
        for(int i=2; i<=n; i++) {
            if(check[i]) answer++;
        }
        return answer;
    }
}

에라토스테네스의 체?

간단하게 설명하자면 i = 2부터 그의 제곱근까지 반복문을 돌면서 자기 자신을 제외한 i의 배수를 지워나가며, 마지막에 값이 true인 배열의 요소 개수를 return하면 소수의 개수를 찾을 수 있다.

 

 

실행 결과

좌 - 기본 / 우 - 에라토스테네스의 체

에라토스테네스의 체의 속도가 훨씬 빠른 걸 볼 수 있다.

반응형
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/알고리즘 풀이' 카테고리의 다른 글
  • 프로그래머스_문자열 내 p와 y의 개수 (for문 X) JAVA
  • [프로그래머스_1] 소수 찾기 JAVA
  • [프로그래머스_1] 소수 만들기 JAVA
  • [프로그래머스_1] 숫자 짝꿍 JAVA
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MSA
    oracle
    넥사크로
    SpringBoot를 이용한 RESTful Web Service 개발
    egov
    알고리즘
    SQL
    Java
    운영체제
    프로그래머스
    JPA
    RESTful
    백준
    에러해결
    토비의스프링부트
    코딩테스트
    기출문제
    QueryDSL
    Spring
    스프링부트
    react
    프론트엔드
    토이프로젝트
    인프런
    전자정부프레임워크
    IT
    자바스크립트
    방통대
    개발자
    springboot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
[프로그래머스_1] 소수 찾기 JAVA
상단으로

티스토리툴바