문제 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. 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 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의 각 원소를 두 배한 값을 가지고 있음.