[CodingTest] 프로그래머스 : 소수만들기

6704 단어 CodingTestCodingTest


// 2. 그 숫자가 소수인지 판단하는 코드
function checkPrimeNumber(num)
{
    for(let i = 2; i < num; i++)  // 1과 자기 자신은 어차피 나눠짐, 따라서 그 사이의 수를 검증할 필요가 있다.
    {
        if( num % i == 0) {  // 소수가 아님을 표시
            // ex. 4를 2로 나눴을때 나머지가 0. 결국 1,자신의 숫자말고 그 사이숫자로 나눠진다는 뜻이기 때문에 return false
            return false
        } 
    }
    return true;
 }


//solution([1, 2, 3, 4]);
solution([1, 2, 7, 6, 4]);
        
function solution(nums){
    let sumNumber = 0;
    let count = 0;
    // 1. 숫자 세개를 골라서 합하는 코드
    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++)
            {
                sumNumber = nums[i] + nums[j] + nums[k];
                console.log(sumNumber);

                if(checkPrimeNumber(sumNumber)) {
                    count++;
                }
            }
        }
    }
    console.log(count);
}

핵심

문제를 쪼개서 할 수 있는 만큼까지만 짜는 능력을 기르는것이 중요하다.
1. 숫자 세개를 골라서 더하기
2. 더한 각각의 수가 소수인지 판단하기

그래서 뭘 몰라서 못 풀었냐?

  1. 숫자 세개를 어떻게 고를지 몰랐음
    1-1. 정확히는 nums.length를 쓰는개념
  2. why? i+1, j+1인가? (애매함)
  3. 소수를 판단하는것.
    3-1. 1과 자신을 제외한 숫자를 뽑아내는것
    3-2. 그 숫자를 가지고 어떻게 소수를 판단하냐?
  4. 소수판단을 했을때 새로 변수 선언을 해주는것
    4-1. 출력할 값. 즉 count를 해줄 공간을 만드는것

풀이과정 내에서 총 5개의 과정에서 막혔다. 벽을느낌.

좋은 웹페이지 즐겨찾기