Algorithm

[Programmers] 소수 만들기 (JavaScript)

반응형

문제 설명

주어진 숫자 3개의 수를 더했을 때 소수가 되는 경우의 수를 구하는 문제

풀이과정 ✨

  1. 반복문을 이용하여 3개의 수를 더했을 때의 수를 number 변수에 할당한다.
  2. sosu()라는 함수명을 가진 함수를 선언하고 로직을 구현한다.
  3. sosu 함수는 숫자를 인자로 받아 2 부터 자기자신의 제곱근까지 반복문을 통해 나머지를 구한다.
  4. 2부터 자기자신의 제곱근까지 나누어 보았을 때 나머지가 0이 아니라는 것은 소수가 아님으로 false를 return 한다.
  5. sosu로 부터 return 받은 Boolean type이 true 라면 변수 answer에 + 1 을 해준다.
  6. 결과값 answer를 return 받는다.

Code

function solution(nums) {
  let answer = 0;
  let max = nums.length;

  // 3개의 수를 더했을떄 나오는 모든 경우의 수를 구함
  for (let i = 0; i < max -2; i ++) {
    let number = 0;
    for (let j = i + 1; j < max - 1; j++) {
      for (let k = j + 1; k < max; k++) {
        number = (nums[i] + nums[j] + nums[k]);

        // sosu인지 판별하는 함수를 호출했을 때의 결과값이 true 라면
        if (sosu(number)) answer++
      }
    }
  }

  function sosu(number) {
    for(let i = 2; i <= Math.floor(Math.sqrt(number)); i++) {
      // 1 과 자기자신이 아닌 다른 수로 나누었을 떄 나머지가 없다면 소수가 아니다.
      if(number % i === 0) return false
    }
    return true
  }
  return answer
}
반응형