let's get IT with DAVINA ๐Ÿ’ป

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]Lv0. ๋ถ„์ˆ˜์˜ ๋ง์…ˆ ๋ณธ๋ฌธ

DEV_IN/๋ฌธ์ œํ’€์ด

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]Lv0. ๋ถ„์ˆ˜์˜ ๋ง์…ˆ

๋‹ค๋นˆ์น˜์ฝ”๋“œ๐Ÿ’Ž 2023. 3. 6. 23:59

โ“ ๋ฌธ์ œ ์„ค๋ช…

์ฒซ ๋ฒˆ์งธ ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋œปํ•˜๋Š” numer1, denom1, ๋‘ ๋ฒˆ์งธ ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋œปํ•˜๋Š” numer2, denom2๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋‘ ๋ถ„์ˆ˜๋ฅผ ๋”ํ•œ ๊ฐ’์„ ๊ธฐ์•ฝ ๋ถ„์ˆ˜๋กœ ๋‚˜ํƒ€๋ƒˆ์„ ๋•Œ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ

 

0 <denum1, num1, denum2, num2 < 1,000

๐Ÿ—๏ธ ์ž…์ถœ๋ ฅ ์˜ˆ

numer1 denom1 numer2 denom2 result
1 2 3 4 [5, 4]
9 2 1 3 [29, 6]

๐Ÿ’ก๋น„๋‹ˆ's ํ’€์ด

๋งˆ์ง€๋ง‰ ์•ฝ๋ถ„์„ ์ƒ๊ฐ ๋ชปํ–ˆ๋”๋‹ˆ ๊ณ„~์† ์ •๋‹ต๋ฅ ์ด 33.3%์—ฌ์„œ ๋ฏธ์ณ๋„๋Š”์ค„...๐Ÿคฏ
function solution(numer1, denom1, numer2, denom2) {
    let arr = []; //๋ฐฐ์—ด ํ˜•ํƒœ return
    let gcd=1; //์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
    let lcm=denom1*denom2; //์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜
    let num=Math.max(denom1,denom2)
    
    for(let i=2;i<=num;i++){
        if(denom1%i===0&&denom2%i===0){
            gcd=i; //๋‘ ์ˆ˜ ๋‹ค ๋‚˜๋ˆ ๋–จ์–ด์ง€๋Š” ์ˆ˜
        }
    }
    
    lcm=lcm/gcd; //์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆ ์ฃผ๊ธฐ
    
    arr[0]=(numer1*(lcm/denom1))+(numer2*(lcm/denom2))
    arr[1]=lcm;
    
    //๊ฒฐ๊ณผ ๊ฐ’ ์•ฝ๋ถ„ํ•˜๊ธฐ [2,14]=>[1,7]
    let sm=1;
    let num2=Math.min(arr[0],arr[1])
    for(let i=2;i<=num2;i++){
        if(arr[0]%i===0&&arr[1]%i===0){
            sm=i;
        }
    }
    return [arr[0]/sm,arr[1]/sm];
}

//1. denom1 & denom2 ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค
//2. ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ % denom1์„ numer1์— ๊ณฑํ•˜๊ณ  
//3. ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ % denom2์„ numer2์— ๊ณฑํ•˜๊ณ  
//4. ๋‘ ์ˆ˜์˜ ํ•ฉ์ด ์ฒซ๋ฒˆ์งธ ์ธ์ž, 
//5. ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๊ฐ€ ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๋ฐฐ์—ด return

 


๐Ÿ‘€ others' ํ’€์ด

๋ถ„์ž์™€ ๋ถ„๋ชจ์˜ ์ตœ๋Œ€์น˜๋ฅผ ๊ตฌํ•œ ๋’ค, ๊ธฐ์•ฝ๋ถ„์ˆ˜๋กœ ๋งŒ๋“ค์–ด ๊ฒฐ๊ณผ๊ฐ’ ๋„์ถœ ๋ฐฉ๋ฒ•..

์ˆซ์ž๋ฅผ ๋Œ€์ž…ํ•ด๋ณด๋ฉฐ ๋ง์ด ๋˜๋Š” ์ •๋„๋Š” ๊นจ๋‹ฌ์•˜์œผ๋‚˜.. ํ™€๋กœ ์ ˆ๋Œ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ด ๋ฐฉ๋ฒ•์€ ๋ชปํ•  ๊ฒƒ ๊ฐ™์•˜๋‹ค..

function solution(denum1, num1, denum2, num2) {
	//๋ถ„์ž
    let topNum = num1*denum2 + num2*denum1;
    //๋ถ„๋ชจ
    let botNum = num1*num2
    //์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜
    let max=1;
    //์•ฝ๋ถ„
    for(let i=2;i<=topNum;i++){
    	if(topNum%i===0&&botNum%i===0){
        	max=i;
        }
    }
    return [topNum/max,botNum/max];
}

 

cf) ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘, ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์ด๋ผ๋Š”๊ฑธ ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๋“ฏ ํ•˜์—ฌ ๊ฐ•์˜์™€ ์˜จ๊ฐ– ๋ธ”๋กœ๊ทธ ์„ค๋ช…๊ธ€์„ ๋ดค์œผ๋‚˜.. ์•„๋ฌด๋ฆฌ ๋ด๋„ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ”์ง€๋งŒ ์œ ํŠธ๋ธŒ ๊ฐ•์˜ ํ•˜๋‚˜๋ฅผ ๋ณด๊ณ  ์กฐ๊ธˆ ๊ฐ์ด ์žกํ˜”๋‹ค.

https://www.youtube.com/watch?v=J5Yl2kHPAY4 

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•
2๊ฐœ์˜ ์ž์—ฐ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜ (์ด์™ธ์—๋Š” ์†Œ์ธ์ˆ˜ ๋ถ„ํ•ด, ๋‚˜๋ˆ—์…ˆ ๋“ฑ)
2๊ฐœ์˜ ์ž์—ฐ์ˆ˜ a,b๊ฐ€ ์žˆ์„ ๋•Œ (๋‹จ, a>b) a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ r์ด๋ผ๊ณ  ํ•˜๋ฉด, a&b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜=b&r์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
์ด ์„ฑ์งˆ์— ๋”ฐ๋ผ, b๋ฅผ r๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ r2๋ฅผ ๊ตฌํ•˜๊ณ , r์„ ๋‹ค์‹œ r2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜์—ˆ์„ ๋•Œ์˜ ๋‚˜๋ˆ„๋Š” ์ˆ˜๊ฐ€ a,b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์ด๋‹ค. 
function gcd(a, b) { // ๋‹จ, a๊ฐ€ b๋ณด๋‹ค ์ปค์•ผํ•จ.
        let R;
        while ((a % b) > 0)  {
             R = a % b; //๋‚˜๋จธ์ง€
                a = b;
                b = R;
        }
         return b;
}โ€‹

 

Comments