[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
}