분수의 덧셈, 배열 두배 만들기

김태욱·2023년 1월 19일
0

프로그래머스

목록 보기
1/1

오늘의 문제

1. 분수의 덧셈

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

코드를 짜기 전 내가 해야 하는 것을 말로 표현해 봤다!
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 을 한 후 반복을 계속 돌리는 식으로 구상했다!

배열 두배 만들기

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

위랑 똑같이
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 한 값을 빈 배열에 넣어주는 것이다 ..
아직 사용법은 잘은 모르는데 따라 쳐보니 된다 .. 더 확실히 공부하고 리뷰해야겠다!

profile
넘어보자

0개의 댓글