본문 바로가기

프로그래머스 문제/Level 1

[프로그래머스] 소수 찾기 - 자바스크립트

문제 설명

 

 

 

문제 풀이

  이번엔 두 가지의 풀이를 들고 왔다. 첫 번째 풀이는 코드도 더욱 간결하고 테스트도 통과하였다. 하지만 채점하고 제출하는데 테스트 10, 11, 12번을 통과하지 못해서 효율성 검사에서 탈락했다.

function solution(n) {
  let answer = [];
  for(let i = 2; i <= n; i++) {
    let check = true;
    for(let j = 2; j < i; j++) {
      if(i % j === 0) {
        check = false;
      }
    }
    if(check) {
      answer.push(i);
    }
  }
  return answer.length;
};

 

 

두 번째 풀이는 조금 복잡해졌지만 잘 통과하는 모습을 보여준다.

function solution(n) {
    let answer = 0;
    let arr = [];
    for (let i = 2; i <= n; i++) {
        arr[i] = i; 
    } for (let i = 2; i <= n; i++) {
        if (arr[i] === 0) 
            continue; 
        for (let j = i + i; j <= n; j += i) {
            arr[j] = 0; 
        } 
    } 
    for (let i = 2; i <= n; i++) {
        if (arr[i] !== 0) 
            answer++; 
    } 
    return answer;
}

 

 

 

실행 결

 두 코드 모두 테스트 1, 2를 통과하였다.

 

 

코드 채점하고 제출

첫번째 코드 정확성, 효율성 테스트 실패

 

 

두번째 코드 정확성, 효율성 테스트 통과