두 변수를 나눈 값에 1000을 곱한 후 정수 부분 return
const solution = (num1, num2) => Math.floor(num1 / num2 * 1000);
두 수가 같으면 1, 다르면 -1을 return
const solution = (num1, num2) => num1 == num2 ? 1 : -1;
비교 연산자
==
&!=
: 값이 같은지 비교
===
&!==
: 값 & 타입까지 같은지 비교(더 엄격함)⭐️ 삼항연산자
if else문의 대체재로 빈번히 사용됨.
true = 1, false = 0이라는 특성을 활용한 풀이가 자주 보임.(ex.문제3 참고)condition ? exprIfTrue : exprIfFalse
ex)
isMember ? "welcome" : "sign Up";
최소공배수&최대공약수 구하기 -> 최소공배수로 통분 -> 최대공약수로 나눠줌
최대공약수 구하기 -> 두 분모의 곱으로 분수 통분 -> 최대공약수로 나눠줌
💡 최대공약수 알고리즘ㅣ 유클리드 호제법
두 수를 나누어서 나머지가 0이 되면 최대공약수는 나눈 수가 된다.
0이 아닌 경우에는 더 작은 수와 두 수를 나눈 나머지를 다시 함수에 넣어 계산한다.
계산 과정
// ex) 4/15 + 6/50
// 15 & 50의 최대공약수 : 5
// 분자 : 50*4 + 15*6 = 290
// 분모 : 15*50 = 750
// 290 & 750의 최대공약수 : 10
// 290 / 10 = 29
// 750 / 10 = 75
// [29,75]
function solution(denum1, num1, denum2, num2) {
// 최대공약수 구하는 함수
function GCD(num1, num2){
if(num1 >= num2){
if(num1 % num2 == 0){
return num2;
}else{
return GCD(num2, num1 % num2);
}
}else if(num1 < num2){
if(num2 % num1 == 0){
return num1;
}else{
return GCD(num1, num2 % num1);
}
}
}
// 분자 & 분모 구하기
let denum = denum1 * num2 + denum2 * num1; // 분자
let num = num1 * num2; // 분모
// 분자 & 분모의 최대공약수 구하기
let num_gcd = GCD(denum, num);
// 기약분수 만들기
let answer = [denum/num_gcd, num/num_gcd];
return answer;
}
function fnGCD(a, b){
return (a%b)? fnGCD(b, a%b) : b;
}
유클리드 호제법 참조: https://velog.io/@corone_hi/158.-분수-합
정수 배열 numbers
가 매개변수로 주어질 때, numbers
의 각 원소에 두 배한 원소를 가진 배열을 return하기.
function solution(numbers) {
let answer = numbers.map(function(num) {
return num * 2;
})
return answer;
}
const solution = (numbers) => numbers.map(num => num *2)
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
⭐️ 배열 안의 원소를 활용해 계산하기
map( ) , forEach( ) , reduce( )
map()
arr.map(실행할 함수)forEach()
arr.forEach(실행할 함수)reduce()
arr.reduce((acc, cur) => 연산, 초기값)
단순한 문제인데 엄청 헤맸다..