본문 바로가기
문제풀이/프로그래머스

소수 만들기

by dev_kong 2021. 12. 23.
728x90
728x90

https://programmers.co.kr/learn/courses/30/lessons/12977/solution_groups?language=javascript&type=my 

 

프로그래머스

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

programmers.co.kr

 

자바스크립트 마려워서 쉬운거 하나 풀어봄

 

문제 설명

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항
  • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

 

접근방법

완전 탐색을 이용해서 모든 합을 구해서 배열 하나에 때려넣고

소수인지 확인해주면 된다.

소수인지 아닌지 확인하는 방법은 많이 다뤘으니까 패쓰.

https://kong-dev.tistory.com/76?category=982994 

 

소수판별하기

이거 소수판별이라고면 치면 나오는 내용이긴한데 한번 정리해두면 안까먹을거 같아서 정리해보려한다. 어떤 숫자가 소수인지 아닌지 판별을 할때는 2부터 그 숫자-1까지 하나하나 나누면서 조

kong-dev.tistory.com

 

// 소수인지 아닌지 판별하는 함수를 따로 선언해줬다.
function checkPrime(number) {
  for (let i = 2; i <= Math.sqrt(number); i++) {
    if (number % i === 0) return false;
  }
  return true;
}

function solution(nums) {
  let answer = 0;
  const sumArray = [];

  // 3중 for문을 통한 완전탐색
  for (let i = 0; i < nums.length; i++) {
    for (let j = i + 1; j < nums.length; j++) {
      for (let k = j + 1; k < nums.length; k++) {
        const sum = nums[i] + nums[j] + nums[k];
        sumArray.push(sum);
      }
    }
  }

  // 완전탐색을 통해 구한 모든 합이 들어있는 배열 sumArray에
  // for문을 돌려서 위에서 선언한 함수(checkPrime)를 사용한다.
  for (let s = 0; s < sumArray.length; s++) {
    //   소수인 경우 answer에 1을 더한다.
    if (checkPrime(sumArray[s])) answer += 1;
  }
  return answer;
}

const array = [1, 2, 7, 6, 4];
console.log(solution(array)); // 4

상쾌하다

728x90
728x90

'문제풀이 > 프로그래머스' 카테고리의 다른 글

[Javascript] 폰켓몬  (0) 2022.01.04
모의고사  (0) 2021.12.28
프린터  (0) 2021.11.29
기능개발  (0) 2021.11.27
대중소괄호 짝 맞추기  (0) 2021.11.26

댓글