JS/[프로그래머스] 문제풀이

2일차_Lv.0 두 수의 나눗셈, 숫자 비교, 분수의 덧셈, 배열 두배 만들기

web_seul 2023. 2. 27. 16:29
반응형

[ 두 수의 나눗셈 ]

Q. 정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.

function solution(num1, num2) {
    var answer = parseInt((num1/num2)*1000);
    return answer;
}

 

* 다른 풀이

const solution = (num1, num2) => Math.floor(num1 / num2 * 1000);
function solution(num1, num2) {
    return Math.trunc(num1 / num2 * 1000);
}

 

* Math.floor : 소수점이하 버림하여 정수 반환

* Math.ceil : 소수점이하 올림하여 정수 반환

* Math.round : 소수점 이하 반올림하여 정수 반환

* Math.trunc : 소수점 이하는 삭제하여 정수만 반환


[ 숫자 비교하기 ] 

Q. 정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.

function solution(num1, num2) {
    var answer = 0;
    
    function chkNum() {
        if(num1 - num2 == 0){
            answer = 1
        }else{
            answer = -1
        }
    }
    chkNum();
    
    return answer;
}

 

* 다른 풀이

function solution(num1, num2) {
    var answer = num1 === num2 ? 1 : -1;
    return answer;
}

[ 분수의 덧셈 ] 

Q. 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

function solution(numer1, denom1, numer2, denom2) {
    
    var child = numer1 * denom2 + numer2 * denom1;
    var parent = denom1 * denom2;
    
    for(let i=0; i>1; i--){
        if(child % i == 0 && parent % i == 0){
            child = parseInt(child/i);
            parent = parseInt(parent/i);
        }
    }    
    
    var answer = [child, parent];    
    
    return answer;
}

 

* 다른 풀이 (다시보기)

function fnGCD(a, b){
    return (a%b)? fnGCD(b, a%b) : b;
}

function solution(denum1, num1, denum2, num2) {
    let denum = denum1*num2 + denum2*num1;
    let num = num1 * num2;
    let gcd = fnGCD(denum, num); //최대공약수

    return [denum/gcd, num/gcd];
}

 

* boolean 

0 : false , 1 : true


[ 배열 두배 만들기 ] 

Q. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

function solution(numbers) {
    var answer = [];
    
    numbers.forEach(function(numbers){
        answer.push(numbers *= 2);
    });
    
    return answer;
}

 

* 다른 풀이 (다시보기)

function solution(numbers) {
    return numbers.reduce((a, b) => [...a, b * 2], []);
}
const solution = (numbers) => numbers.map((number) => number * 2)

function solution(numbers) {
    return numbers.map(i=>i*2);
}

 

* reduce : 배열의 요소들을 순회하면서 반복적인 연산, 현재 리턴값이 다음 동작에 영향을 끼칠 수 있음

배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);

 

* map : 반복문을 돌며 배열 안의 요소들을 1:1로 짝지어줌, 기존 배열 수정이 아닌 새로운 배열을 만들어냄

배열.map((요소, 인덱스, 배열) => { return 요소 });

 

* forEach : 주어진 함수를 배열 요소 각각에 대해 실행

arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])

 

반응형