Programmers Lv.1 - 소수 찾기[Java]

seren-dev·2022년 5월 4일

Programmers Lv.1

목록 보기
8/15

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

접근

  • 1부터 입력받은 숫자 n 사이에 소수의 개수를 구하기 위해
  • 해당 숫자가 소수인지 판별하는 isPrime 함수를 작성

나의 풀이

시간 초과로 실패..

class Solution {
    public static boolean isPrime(int n) {
        int flag = 0;

        if (n == 2) return true;
        for (int i = 2; i < n; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
    
    public int solution(int n) {
        int cnt = 0;

        for (int i = 2; i <= n; i++) {
            if(isPrime(i))
                cnt++;
        }
        
        return cnt;
    }
}

수정한 버전

class Solution {
    public static boolean isPrime(int n) {

        if (n == 2) return true;
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
    
    public int solution(int n) {
         int cnt = 0;

        for (int i = 2; i <= n; i++) {
            if(isPrime(i))
                cnt++;
        }
        
        return cnt;
    }
}
  • isPrime() 함수의 for문을 n까지 도는게 아니라 Math.sqrt(n)까지만 돌도록 수정

0개의 댓글