[etc] 소수 만들기 , 내적 , 신규아이디 추천


이제 시작했으니 쉬운것부터 천천히 가자..

문제 - 1 설명

문제는 프로그래머스 에서 확인

고민….

  • 소수 체크하는 함수를 따로 구현 필요,
  • 시작위치 잘 체크 필요

내 풀이


var a = [1,2,3,4];

console.log( solution(a) )

function solution(nums) {
    var answer = -1;
    
    var cnt = 0
    var num = 0;
    
    for( var i=0 ; i<nums.length-2 ; i++ ){ //0부터 시작
        for( var z= i+1 ; z<nums.length-1 ; z++){ //첫번째의 다음번쨰부터 시작이니 +1
            for( var y=z+1 ; y<nums.length; y++){  //두번째의 다음번쨰 시작이니 두번쨰+1
                num = nums[i]+nums[z]+nums[y]
                if( isPrime( num )) cnt++
            }
        }
    }
    return cnt;
}

// 소수 체크
function isPrime(n){
    if(n < 2) return false;
    for(let i=2; i<=n/2; i++){
        if(n % i === 0){
            return false;
        }        
    }
    return true;
}



다른사람 풀이

너무 쉽고 내 풀이랑 똑같아서 생략


문제 - 2 설명

문제는 프로그래머스 에서 확인

고민 없음

내풀이


function solution1(a,b) {
    
    return a.map(function(data , index){
        return data * b[index]
    }).reduce(function(a,b,index){
        return a+b;
    })
    //처음에는 이렇게 풀었다가 굳이 2번이나 할 필요 없어서...solution2()
}

function solution2(a,b) {
        
    return a.reduce(function(sum,data,index){
        sum+= data * b[index];
        return sum
    },0)
    
}




문제 - 3 설명

문제는 프로그래머스 에서 확인

고민 없음

  • 정규식으로 하면 간단.

내풀이


function solution(new_id) {
    
    const answer = new_id
        .toLowerCase() // 1
        .replace(/[^\w-_.]/g, '') // 2
        .replace(/\.{2,}/g, '.') // 3
        .replace(/^\.|\.$/g, '') // 4
        .replace(/^$/, 'a') // 5
        .slice(0, 15).replace(/\.$/, ''); // 6
    const len = answer.length;
    return len > 2 ? answer : answer + answer.charAt(len - 1).repeat(3 - len); // 7
    
    
}





© 2017. by isme2n