[프로그래머스] Lv.0 합성수 찾기 JavaScript

Janet·2023년 4월 5일
0

Algorithm

목록 보기
114/314

문제 설명

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ n ≤ 100

입출력 예

nresult
105
158

입출력 예 설명

입출력 예 #1

  • 10 이하 합성수는 4, 6, 8, 9, 10 로 5개입니다. 따라서 5를 return합니다.

입출력 예 #1

  • 15 이하 합성수는 4, 6, 8, 9, 10, 12, 14, 15 로 8개입니다. 따라서 8을 return합니다.

문제풀이

💡 문제풀이 과정

  • 답안 1번: 합성수는 4부터 시작하기 때문에, for()반복문을 중복으로 사용하여 i = 4부터, i ≤ n까지, j = 1부터, j는 i보다 작거나 같을 때까지로 반복문의 범위를 설정한다. 약수의 개수를 세기 위해 count = 0을 변수로 선언 하여, if (i % j == 0) count++; 하고, 만약 count가 3이상 되면 answer에 1씩 더해주어야 할 것이다.
  • 답안 2번: 마찬가지로 합성수는 4부터 시작하기 때문에, for() 반복문의 i = 4 부터 시작하고 i ≤ n;까지 이다. j = 2부터 시작 j < i 까지로 설정하였는데, i % j == 0인경우 answer에 1씩 더해준다.

  • cf. 합성수
    • 합성수는 약수의 개수가 3개 이상인 자연수1보다 큰 자연수 중 소수가 아닌 수를 말한다. 2를 제외한 모든 짝수는 합성수이다. (단, 합성수가 모두 짝수라는 것은 아니다)

✅ 답안 #1

function solution(n) {
  let answer = 0;
  for (let i = 4; i <= n; i++) {
    let cnt = 0;
    for (j = 1; j <= i; j++) {
      if (i % j == 0) cnt++;
    }
    if (cnt >= 3) answer++;
  }
  return answer;
}

✅ 답안 #2

function solution(n) {
  let answer = 0;
  for (let i = 4; i <= n; i++) {
    for (let j = 2; j < i; j++) {
      if (i % j == 0) {
        answer++;
        break;
      }
    }
  }
  return answer;
}
profile
😸

0개의 댓글