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

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

Ryomi 2023. 3. 7. 09:32
728x90
반응형

 

1. 가위 바위 보

: 가위는 2, 바위는 0, 보는 0일때 가위 바위 보를 낸 순서가 담긴 문자열이 주어진다. 이를 이기는 경우를 순서대로 나타낸 문자열 return

- 내가 짠 코드

// 전
function solution(rsp) {
    let rspArr = rsp.split("");
    let answer = '';
    
    for(let i=0; i<rspArr.length; i++) {
        if(rspArr[i] === '2') {
            answer += '0';
        } else if(rspArr[i] === '0') {
            answer += '5';
        } else {
            answer += '2'
        }
    }
    return answer
}


// 후
function solution(rsp) {
    let arr = Array.from(rsp)
    return arr.map(el => el === '2' ? '0' : (el === "0" ? "5" : "2")).join("")
}

 

- solution

function solution(rsp) {
    let arr = {
        2: 0,
        0: 5,
        5: 2
    };
    var answer = [...rsp].map(v => arr[v]).join("");
    return answer;
}

 

 

2. 세균증식

: 어떤 세균은 시간당 2배씩 증식. 초기 세균 수(n)와 경과 시간(t)이 매개변수로 주어질 때, t시간 후 세균 수 return 

- 내가 짠 코드

function solution(n, t) {
    return 2**t * n;
}

- solution

function solution(n, t) {
    return n*Math.pow(2,t);
}

function solution(n, t) {
  return n << t;
}

 

 

3. 문자열 정렬하기 (1)

: 문자열이 매개변수로 주어질 때, 숫자만 골라 오름차순으로 정렬한 배열 return

- 내가 짠 코드

// 전
function solution(my_string) {
    let arr = my_string.split("");
    
    let nums = arr.filter((el) => Number(el) || el === '0');
    let answer = nums.map((el) => Number(el));

    
    return answer.sort((a, b) => a - b )
}


// 후
function solution(my_string) {
    let arr = Array.from(my_string);
    let answer = arr.map(el => Number(el))
    return answer.filter(el => !isNaN(el)).sort((a, b) => a-b)
}

- solution

function solution(my_string) {
    return Array.from(my_string).filter(v => !isNaN(+v)).sort((a,b) => a - b).map(v => +v);
}

function solution(my_string) {
    return my_string.match(/\d/g).sort((a, b) => a - b).map(n => Number(n));
}

 

 

4. n의 배수 고르기

: 정수(n)와 정수의 배열이 매개변수로 주어질 때, n의 배수만 있는 배열 return 

- 내가 짠 코드

function solution(n, numlist) {
    return numlist.filter((el) => el % n === 0);
}

 

 

5. 주사위의 개수

: 상자에 정육면체 모양의 주사위를 최대한 많이 채우려 한다. 주사위의 가로, 세로, 높이가 저장된 배열과 상자의 모서리 길이 n이 주어질 때, 채울 수 있는 주사위 개수 return

- 내가 짠 코드

function solution(box, n) {
    return Math.floor(box[0]/n) * Math.floor(box[1]/n) * Math.floor(box[2]/n);
}

- solution

function solution(box, n) {
    return box.reduce((acc,v) => acc * Math.floor(v / n), 1);
}

 

 

728x90
반응형