코드를 짜기 전 내가 해야 하는 것을 말로 표현해 봤다!
1.분수를 덧셈한다!
2.분자 분모중의 최대공약수로 나눠준다!
3.분자분모중 작은 수를 찾는다!
4.작은수를 분자분모로 나눠본다
5.둘다 나누어 떨어지면 그 나눈 수가 최대공약수가 된다!
6.안 나누어떨어지면 작은 수를 1줄이고 작은수를 분자분모로 다시 돌아가게 한다!
반복을 하면서 조건에 맞는 값을 찾는다!
이런식으로 구상을 해봤다 ! 아직 자바스크립트 초보라 내가 최대한 아는 방식으로 표현하였다 .
function solution(numer1, denom1, numer2, denom2) {
let bottom = denom1 * denom2
let top = (numer1*denom2) +(numer2*denom1)
let minNumber;
if(top < bottom) {
minNumber = top
} else {
minNumber = bottom
}
while(true){
if(top % minNumber === 0 ) {
if(bottom % minNumber === 0) {
return [top / minNumber, bottom/minNumber]
}
}
minNumber = minNumber - 1
}
}
분자를 top으로 변수를 주고
분모를 bottom 으로 변수를 준 후
minNumber 변수를 만들어서 분자와 분모중 작은 값을 찾았다.
while 로 반복문을 돌리면서 분자가 나눈 값이 0 인것과 분자가 나눈 값이 0인 값을 찾은 후
분자 분모를 배열안에 넣는 식으로 구상했다!
조건에 맞는게 없으면 분자 분모중 작은 값을 -1 을 한 후 반복을 계속 돌리는 식으로 구상했다!
위랑 똑같이
1.numbers에서 원소를 꺼낸다
2.numbers 원소를 꺼내 2배를 한후 새 배열에 넣어준다
이런식으로 코드를 짜면 될 거 같았다!
첫번째 풀이로는
function solution(numbers) {
let answer = [];
for(let i = 0; i < numbers.length ; i++){
let num = (numbers[i] *2)
answer.push(num)
}
return answer
}
for 반복문을 돌려서 하나하나의 값을 push 를 통하여 answer 배열안에 넣어줬다!
두번째 풀이
function solution(numbers) {
return numbers.map((item)=>item*2)
}
map을 사용하여 하나하나의 배열에서 가지고 온 후 *2 를 해주었다
세번째 풀이
function solution(numbers) {
return numbers.reduce((a, b) => [...a, b * 2], []);
}
이건 인터넷 검색을 통해 알게 되었는데 정말 편하고 신세계 이다 .
a 는 기존 numbers를 가리키고 b는 a 에 *2 한 값을 빈 배열에 넣어주는 것이다 ..
아직 사용법은 잘은 모르는데 따라 쳐보니 된다 .. 더 확실히 공부하고 리뷰해야겠다!