-첫 풀이
프로그래머스 level 1로 분류되어 있는 소수 찾기 문제이다. 처음의 생각은 반복문을 통해 2부터 n까지의 정수들을 1부터 자신 전까지 나눈 나머지가 2개 이상인 경우, 소수가 아니라고 판단하는 식으로 진행했다. 이 경우 데이터의 범위가 1,000,000이기 때문에 뒤에 나오는 테스트 케이스에서 시간 초과 및 효율성 체크에서 좋지 않은 결과를 가져왔다. - 에라토스테네스의 체 알고리즘인터넷의 도움을 받아 소수를 판별하는 알고리즘인 '에라토스테네스의 체'에 대해서 처음 접하게 되었다. 알고리즘의 핵심 내용은 2부터 시작해(1은 소수가 아니므로) 자기 자신을 제외한 배수들을 모두 '체'에 걸러주면 된다. 1. '체'로 거르기 위한 1차운 배열을 생성한다. (n+1 크기) 2. 2부터 배수들을 모두 체크해준다. (단, 자신은 제외하고 4,6,8,10..... <= n) 3. 다음 3의 배수들을 모두 체크해준다. 4. 4는 앞선 2의 배수로써 체크가 되어 소수가 아니기 때문에 넘어간다. 이와 같은 방식으로 진행하면 결국 2,3,5,7,11 등 소수들의 배수들이 모두 걸러지게 되며 소수들만 남게 된다.
에라토스테네스의 체 알고리즘은 넓은 범위의 데이터들 가운데 소수를 판별하는데 효과적인 알고리즘이지만, 특정 수가 소수인지 판별하는 경우는 비효율적이라고 한다. RATSENO문제설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항
문제풀이 [ 문제 ] [프로그래머스] level1. 소수 찾기 (자바 JAVA)문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr # 접근 방법 및 풀이
# 주의할 점
JAVA 코드 효율성 틀린 코드
효율성 통과 코드
REVIEW 소수 찾을때 Math.sqrt(num) 범위로 해서 풀기! |