알고리즘 - 소수 찾기

HoJeong Im·2021년 9월 21일
0

Break_Algo

목록 보기
11/46

문제

  • 링크

  • 기본적인 순열과 소수 찾기 알고리즘을 물어보는 문제

코드

function solution(numbers) {
    let answer = 0;
    
    let arr1 = numbers.split("");
    let set = new Set();
    console.log(arr1)
    const perm = (arr, count) => {
        
        let result = [];
        
        if(count === 1){
            return arr.map((v)=>[v])
        }
        
        arr.forEach((val, index, arr1)=>{
            const now = val;
            const restArr = arr.filter((_, index1)=>{
                return index !== index1
            });
            
            const permArr = perm(restArr, count-1);
            const combineArr = permArr.map((v)=>[val, ...v]);
            result.push(...combineArr);
            
        });
        
        return result;
           
    }
    
    for(let i = 1 ; i <= arr1.length ; i++){
        let arr2 = perm(arr1,i).map((e)=> e.join(""));
        arr2.forEach((val)=>{
            
            let val1 = parseInt(val);
            
            if(val1 > 1){
                let is = true;
                for(let j = 2 ; j <= Math.sqrt(val1); j++){
                    if(val1 % j === 0){
                        is = false;
                    }
                }
                if(is){
                    set.add(val1);        
                }
                
            }
            
        });
    }
    
    //console.log(...set)
    
    return set.size;
}

회고

  • 순열의 결과로 나오는 것을 중복을 제거하기 위해 JS의 set을 활용

  • set에는 length 대신, size라는 접근자를 사용해서 크기를 가져와야 함

set.size // 이렇게 가져와야 함 
  • 순열, 조합 코드가 익숙해 지지 않음 ㅠㅠㅠ
profile
꾸준함이 제일 빠른 길이었다

0개의 댓글