[ 프로그래머스 ] 합성수 찾기 ( JS )

2024. 6. 28. 01:11·Algorithm/Javascript

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

 

프로그래머스

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

programmers.co.kr

 


[ 문제 ]

 

[ 내 풀이 ]

function solution(n) {
    let answer = 0;
    
    // 1부터 n까지 반복합니다.
    for(let i = 1; i <= n; i++){
    
        // 현재 숫자 i의 약수의 개수를 세기 위한 변수를 초기화합니다.
        let counter = 0;
        
        // 1부터 i까지 반복합니다.
        for(let j = 1; j <= i; j++) {
        
            // i가 j로 나누어 떨어지는지 확인합니다.
            if(i % j == 0) {
            
                // 나누어 떨어지면 약수의 개수를 증가시킵니다.
                counter += 1;
            }
        }
        
        // 약수의 개수가 2개 초과라면 (즉, 소수가 아니라면)
        if(counter > 2) {
        
            // 결과 값을 1 증가시킵니다.
            answer += 1;
        }
    }
    
    return answer;
}

 

[ 다른 풀이 ]

function solution(n) {

    // n+1 크기의 배열을 만들고 모든 요소를 1로 초기화합니다.
    let dp = new Array(n+1).fill(1);

    // 2부터 n까지 반복합니다.
    for(let i = 2; i <= n; i++){
    
        // dp[i]가 1인 경우 (소수인 경우)
        if(dp[i]){
        
            // i의 배수들을 0으로 설정합니다.
            for(let j = 2; i * j <= n; j++){
                dp[i * j] = 0;
            }
        }
    }

    // 배열 dp에서 값이 0인 요소들의 개수를 세어 반환합니다.
    return dp.filter(el => el === 0).length;
}

// 1. 크기가 n+1인 배열 dp를 만들고, 모든 요소를 1로 초기화합니다. 
//    이 배열은 각 숫자가 소수인지 여부를 나타냅니다. 
//    초기에는 모든 숫자를 소수로 가정합니다.

// 2. 2부터 n까지의 숫자 i에 대해 반복합니다.
//    만약 dp[i]가 1이라면, i는 소수입니다.
//    i가 소수라면, i의 배수들은 소수가 아니므로, 
//    i의 배수들을 0으로 설정합니다.

// 3. i의 배수들을 0으로 설정하기 위해, 
//    j를 2부터 시작하여 i * j가 n 이하인 동안 반복합니다.
//    dp[i * j]를 0으로 설정하여 i의 배수들을 소수가 아니라고 표시합니다.

// 4. dp 배열에서 값이 0인 요소들의 개수를 세어 반환합니다. 
//    이 값은 n 이하의 숫자 중 소수가 아닌 숫자의 개수를 나타냅니다.
반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Javascript' 카테고리의 다른 글

[ 프로그래머스 ] 컨트롤 제트 ( JS )  (0) 2024.07.13
[ 프로그래머스 ] 숨어있는 숫자의 덧셈(1) ( JS )  (0) 2024.07.10
[ 프로그래머스 ] 주사위의 개수 ( JS )  (0) 2024.06.26
[ 프로그래머스 ] 배열 회전시키기 ( JS )  (0) 2024.06.24
[ 프로그래머스 ] 공 던지기 ( JS )  (0) 2024.06.24
'Algorithm/Javascript' 카테고리의 다른 글
  • [ 프로그래머스 ] 컨트롤 제트 ( JS )
  • [ 프로그래머스 ] 숨어있는 숫자의 덧셈(1) ( JS )
  • [ 프로그래머스 ] 주사위의 개수 ( JS )
  • [ 프로그래머스 ] 배열 회전시키기 ( JS )
heee1
heee1
FE 개발자를 희망하는 임희원 입니다.
  • heee1
    heee1.blog
    heee1
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • Front-end (1)
        • Javascript (4)
        • Typescript (1)
        • React (0)
        • Next.js (1)
        • Tool (1)
        • Git (1)
        • Prettier (0)
        • Test-Framework (1)
        • Vercel (1)
      • 교육 (28)
        • 항해99 : 웹개발 종합반 18기 (14)
        • 프로젝트 캠프 : React 2기 (5)
        • 코드잇 스프린트 : 단기심화 5기 (9)
      • Algorithm (29)
        • Javascript (24)
        • Python (5)
      • 코드 보관함 (1)
        • 배치스크립트 ( .bat ) (1)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    til
    모킹
    react-spring
    css animation
    Baekjoon
    자바스크립트
    node.js
    테스트 프레임워크
    Python
    티스토리챌린지
    항해99
    스프린트
    next.js
    코드잇
    백준
    JavaScript
    jest
    tailwindcss
    오블완
    speed insights
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
heee1
[ 프로그래머스 ] 합성수 찾기 ( JS )
상단으로

티스토리툴바