자료구조 및 알고리즘/JavaScript Practice

JS Practice) 프로그래머스로 공부하기 9

Ryomi 2023. 3. 10. 09:34
728x90
반응형

 

1. 외계행성의 나이

: 우주여행을 하던 머쓱이는 엔진고장으로 모 행성에 불시착했다. 입국심사에서 나이를 말해야 하는데, 이 행성에서는 0~9는 a~j로 대체한다. 매개변수로 나이가 주어질 때, 이 행성식 나이 return 

- 내가 짠 코드

// 전
function solution(age) {
    let str = 'abcdefghij';
    let num = String(age).split('');
    let answer = []
    
    for(let i=0; i<num.length; i++){
        answer.push(str[num[i]]);
    }
    return answer.join("");
}


// 후
function solution(age) {
    let str = 'abcdefghij';
    let num = String(age).split('');
    let answer = ''
    
    num.forEach(el => {
       answer += str[Number(el)]
    } )
    return answer
}

 

- solution

function solution(age) {
  return age
    .toString()
    .split("")
    .map((v) => "abcdefghij"[v])
    .join("");
}

 

 

2. 약수 구하기

: 정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열 return 

- 내가 짠 코드

function solution(n) {
    var answer = [];
    let i=1;
    while(i <= n) {
        n%i === 0 ? answer.push(i) : "";
        i++;
    }
    return answer;
}

- solution

function solution(n) {
    return Array(n).fill(0).map((v, index) => v+index+1).filter((v) => n%v===0);
}

 

 

3.  369게임

: 머쓱이는 친구들과 369게임을 하고 있다. 머쓱이가 말해야하는 숫자가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수의 횟수  return

- 내가 짠 코드

// 전
function solution(order) {
    let orderArr = String(order).split(""); 
    let count = 0;
    
    orderArr.map((el) => el === "3" | el === "6" | el === "9" ? count++ : 0);
    return count
}


// 후
function solution(order) {
    let orderArr = String(order).split(""); 
    let count = 0;
    
    orderArr.map(el => '369'.includes(el) ? count++ : 0);
    return count
}

- solution

function solution(order) {
    return Array.from(String(order)).filter(el => '369'.includes(el)).length
}

 

 

4. 숫자 찾기

: 정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중 k가 있으면 그 숫자의 자릿수 return, 없으면 -1 return

- 내가 짠 코드

function solution(num, k) {
    return String(num).indexOf(k) > -1 ? String(num).indexOf(k) + 1 : -1 ;
}

- solution

function solution(num, k) {
    return num.toString().split("").map((el) => Number(el)).indexOf(k) + 1 || -1
}

 

 

5. 합성수 찾기

: 약수의 갯수가 세 개 이상인 수를 합성수라고 한다. 자연수 n이 매개변수로 주어질 때, n이하의 합성수 갯수 return

- 내가 짠 코드

function solution(n) {
    let answer = 0
    for(let i=1; i<=n; i++){
        let count = 0
        for(let j=1; j<=i; j++){
            if(i % j === 0) count++
        }
        if(count >= 3) answer++
    }
    return answer
}

- solution

function solution(n) {
	// 배열을 1부터 n까지의 숫자로 채우기
    let base = Array.from(Array(n), (v,i) => i+1)
    
    for(let i = 2; i <= parseInt(Math.sqrt(n)); i++) {
        base = base.filter(el => el%i != 0 || el <= i)
    }
    return n - base.length
}

 

 

 

 

 

728x90
반응형