728x90
반응형

 

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

A :

function solution(num1, num2) {
    var answer = 0;
    answer = Math.floor((num1/num2) * 1000)
    return answer;
}

num1을 num2로 나눈 값에 : num1/num2

1000을 곱한 후 : (num1/num2) * 1000 

=> num1/num2가 먼저 되어야 하므로 소괄호( )를 사용하여 묶어줌.

정수 부분을 : Math.floor((num1/num2) * 1000) 

=> DAY 1에서 정수 부분을 반환하게 하려면 Math.round가 아닌 Math.floor을 사용하는 게 정답으로 인정되기 때문에 Math.floor 사용함.

return 하도록 : return을 사용해서 answer값이 반환(리턴) 되도록 함.

 

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

A :

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

두 수가 같으면 1 : if(num1 == num2) {  answer = 1)

=> 수학에서의 같다 표시는 등호(=) 1개지만 javascript에서는 등호 두 개 (==)를 사용하는 것이 서로 같다는 의미임.

num1과 num2가 같을 시 asnwer가 1이 되도록 조건문을 작성함.

 

두 수가 다르면 -1 : else { answer = -1) 

=> if (조건식) { ... } 에는 조건식과 일치할 시의 반환값이 들어가고, else{ ... }는 조건문과 일치하지 않을 시의 반환값이 들어감.

 

 

 

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

A :

function solution(numer1, denom1, numer2, denom2) {
  var answer = [];

  // 분자와 분모를 더한 결과 계산
  var numerator = numer1 * denom2 + numer2 * denom1;
  var denominator = denom1 * denom2;

  // 분자와 분모의 최대공약수 계산
  var gcd = getGreatestCommonDivisor(numerator, denominator);

  // 기약 분수로 변환하여 배열에 담아 반환
  answer.push(numerator / gcd);
  answer.push(denominator / gcd);

  return answer;
}

// 최대공약수를 구하는 함수
function getGreatestCommonDivisor(a, b) {
  if (b === 0) {
    return a;
  }

  return getGreatestCommonDivisor(b, a % b);
}

 

주어진 두 분수의 분자와 분모를 가지고 덧셈을 수행하여 결과 분자(numerator)와 결과 분모(denominator)를 계산하는 식으로, 분수의 덧셈은 분모를 통분하여 분자끼리 더하고 분모는 그대로 유지하는 것을 의미함.


예를 들어, 첫 번째 분수는 numer1/denom1, 두 번째 분수는 numer2/denom2로 주어졌을 때, 결과 분자는 numer1 * denom2 + numer2 * denom1로 계산하고, 결과 분모는 denom1 * denom2로 계산함.

결과 분자와 결과 분모의 최대공약수(gcd)를 구합니다. 최대공약수는 두 수의 공통된 약수 중 가장 큰 수를 의미함. 

분자와 분모의 최대공약수를 구하는 이유는, 결과 분수를 기약 분수로 만들기 위해서임.

결과 분자와 결과 분모를 최대공약수로 나누어 기약 분수로 변환함. 

이를 위해 numerator / gcd와 denominator / gcd를 계산하여 배열 answer에 순서대로 담음.

최종적으로 기약 분수로 변환된 결과인 answer 배열을 반환함.


 

 

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

A :

function solution(numbers) {
  let answer = [];

  for (let i = 0; i < numbers.length; i++) {
    let double = numbers[i] * 2;
    answer.push(double);
  }

  return answer;
}

answer = [ ] ; : 빈 배열 answer를 생성함, 이 배열은 결과를 담기 위한 용도로 사용됨.

for(let i = 0; i < numbers.length; i++) { .. } :반복문을 통해 주어진 배열 numbers의 각 원소를 순회함. 반복문에서 현재 원소를 가리키는 변수 i는 0부터 배열의 길이보다 작을 때까지 1씩 증가함.

let doble = numbers[i] * 2  : 각 원소의 두 배 값을 계산하여 변수 double에 저장함.  이를 위해 현재 원소 numbers[i]에 2를 곱함.

anwer.push(doble) : 변수 double에 저장된 값을 배열 answer에 추가함. 이를 위해 answer.push(double)를 사용하여 double 값을 배열의 끝에 추가함.

return answer : 반복문이 종료되면 배열 answer를 반환함. 이 배열은 주어진 배열 numbers의 각 원소를 두 배한 값을 가지고 있음.

+ Recent posts