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

JS Practice) 프로그래머스 : 문자 반복 출력하기 / 중앙값 구하기 / 특정 문자 제거하기 / 짝수는 싫어요 / 순서쌍의 개수

Ryomi 2023. 3. 4. 23:43
728x90
반응형

 

1. 문자 반복 출력하기

: 문자열 my_string과 n이 주어질때, 각 문자를 n번 반복한 문자열 return

- 내가 짠 코드

// 전
function solution(my_string, n) {
    let arr = my_string.split('');
    let answer = []
    for(let i=0; i<arr.length; i++) {
        for(let j=0; j<n; j++) {
            answer.push(arr[i])
        }
    }
    return answer.join('')
}


// 후
function solution(my_string, n) {
    let answer = ""
    for(let i of my_string){
        answer += i.repeat(n)
    }
    return answer
}

 

- solution

function solution(my_string, n) {
    return my_string.split('').reduce((acc, cur) => acc + cur.repeat(n), '')
}

 

 

2. 중앙값 구하기

: 숫자 배열이 주어질 때, 중앙값 출력

- 내가 짠 코드

// 전
function solution(array) {
    let arr = array.sort((a,b)=> a-b)
    let i=Math.round(arr.length / 2)
    return arr[i-1]
}

// 후
function solution(array) {
    let arr = array.sort((a,b)=> a-b)
    return arr[Math.ceil(arr.length/2) -1]
}

- solution

function solution(array) {
  return array.sort((a, b) => a - b)[Math.floor(array.length / 2)];
}

 

 

3.  특정 문자 제거하기

: 특정 문자가 제거된 문자열 반환

- 내가 짠 코드

// 전
function solution(my_string, letter) {
    let arr = my_string.split("");
    let arr2=[];
    for(let i=0; i<arr.length; i++) {
        if(arr[i]!==letter) {
            arr2.push(arr[i])
        }
    }
    return arr2.join("")    
}

// 후
function solution(my_string, letter) {
    return my_string.replaceAll(letter, "")
}

- solution

function solution(my_string, letter) {
    const answer = my_string.split(letter).join('')
    return answer;
}

 

 

4. 짝수는 싫어요

: n 이하의 홀수 배열 반환

- 내가 짠 코드

function solution(n) {
    var answer = [];
    for(let i=1; i<=n; i+=2) {
        answer.push(i)
    }
    return answer;
}

- solution

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

 

 

5. 순서쌍의 개수

: 자연수 n의 순서쌍의 개수 반환

- 내가 짠 코드

function solution(n) {
    var answer = n/2;
    let count = 0;
    
    for (let i = 1; i < n; i++) {
        if (n % i === 0){
        count++
        }
    }
    return count + 1;
}

- solution

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

 

 

728x90
반응형