🏁 Algorithm/ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

[Programmers] λΆ„μˆ˜μ˜ λ§μ…ˆ(μžλ°”)

Dhey 2023. 3. 20. 13:48
λ°˜μ‘ν˜•

문제

첫 번째 λΆ„μˆ˜μ˜ λΆ„μžμ™€ λΆ„λͺ¨λ₯Ό λœ»ν•˜λŠ” numer1, denom1, 두 번째 λΆ„μˆ˜μ˜ λΆ„μžμ™€ λΆ„λͺ¨λ₯Ό λœ»ν•˜λŠ” numer2, denom2κ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. 두 λΆ„μˆ˜λ₯Ό λ”ν•œ 값을 κΈ°μ•½ λΆ„μˆ˜λ‘œ λ‚˜νƒ€λƒˆμ„ λ•Œ λΆ„μžμ™€ λΆ„λͺ¨λ₯Ό μˆœμ„œλŒ€λ‘œ 담은 배열을 return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄λ³΄μ„Έμš”.

 

 

μ œν•œμ‚¬ν•­

   -   0 <numer1, denom1, numer2, denom2 < 1,000

 


μž…μΆœλ ₯ 예

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

 

 


μž…μΆœλ ₯ 예 μ„€λͺ…

  μž…μΆœλ ₯ 예 #1

  • 1 / 2 + 3 / 4 = 5 / 4μž…λ‹ˆλ‹€. λ”°λΌμ„œ [5, 4]λ₯Ό return ν•©λ‹ˆλ‹€.

  μž…μΆœλ ₯ 예 #2

  • 9 / 2 + 1 / 3 = 29 / 6μž…λ‹ˆλ‹€. λ”°λΌμ„œ [29, 6]을 return ν•©λ‹ˆλ‹€.

 

 


 

풀이

이 λ¬Έμ œλŠ” μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό ν™œμš©ν•΄μ•Όν•˜λŠ” λ¬Έμ œμ΄λ‹€. 

 

 

처음 μ—λŸ¬ μ½”λ“œ
class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = new int[2];
        
        if(denom1 > denom2){
        	//denom2κ°€ denom1의 배수일 λ•Œ
            if(denom1%denom2 == 0) {
                answer[0] = numer1 + (denom1/denom2)*numer2;
                answer[1] = denom1;
            }else{
                answer[0] = (denom2*numer1 + denom1*numer2);
                answer[1] = (denom1*denom2);
            }
        }else if(denom1 < denom2){
            if(denom2%denom1 == 0){
                answer[0] = (denom2/denom1)*numer1 + numer2;
                answer[1] = denom2;
            }else{
                answer[0] = (denom2*numer1 + denom1*numer2);
                answer[1] = (denom1*denom2);
            }
        }else{
            //denom1κ³Ό denom2κ°€ 같을 λ•Œ
            answer[0] = numer1 + numer2;
            answer[1] = denom1;
        }
        
        return answer;
    }
}

였λ₯˜κ°€ λ°œμƒν–ˆλ˜ μ½”λ“œμ΄λ‹€.

 

! 문제: μ£Όμ–΄μ§„ ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€ 2κ°œλŠ” ν†΅κ³Όν–ˆμœΌλ‚˜, 제좜 μ‹œ 15κ°œμ€‘ 5개의 ν…ŒμŠ€νŠΈλ§Œ ν†΅κ³Όν•˜μ˜€λ‹€.

! 원인: μž…μΆœλ ₯ μ˜ˆμ‹œμ— μžˆλŠ” 문제만 κ°€μ§€κ³  ν•΄κ²°ν•˜λ €λ‹€λ³΄λ‹ˆ λ„ˆλ¬΄ ν‘œλ©΄μ μΈ 문제만 ν•΄κ²°ν•˜λ € ν–ˆλ‹€.

           λ˜ν•œ, κΈ°μ•½ λΆ„μˆ˜μ˜ 쑰건을 κΉœλΉ‘ν–ˆλ‹€.

 

 

λ”°λΌμ„œ κΈ°μ•½λΆ„μˆ˜ 쑰건을 만쑱 μ‹œν‚€κΈ° μœ„ν•΄ λͺ¨λ“  μ½”λ“œλ₯Ό κ°ˆμ•„μ—Žμ—ˆλ‹€.

μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” μ½”λ“œλ₯Ό ν™œμš©ν•˜μ—¬, κ΅¬ν•œ κ²°κ³Ό 값을 μ΅œλŒ€κ³΅μ•½μˆ˜λ‘œ μ•½λΆ„ν•˜μ—¬ κΈ°μ•½λΆ„μˆ˜λ₯Ό λ§Œλ“€μ—ˆλ‹€.

 

 

*μ΅œλŒ€κ³΅μ•½μˆ˜λ₯Ό κ΅¬ν•˜λŠ” μ½”λ“œλŠ” μ•„λž˜ 글을 μ°Έκ³ ν•˜λ©΄ λœλ‹€.

 

[Java] μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜

μžλ°”λ₯Ό κ³΅λΆ€ν•˜λ‹€λ³΄λ©΄ λ‹¨κ³¨μ†λ‹˜μœΌλ‘œ 두 수의 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό κ΅¬ν•˜λŠ” λ¬Έμ œκ°€ 자주 λ“±μž₯ν•œλ‹€. μ•„λž˜ μ€€λΉ„ν•œ μ˜ˆμ œλŠ” 두 수λ₯Ό μž…λ ₯λ°›κ³  두 수의 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό κ΅¬ν•˜λŠ” 문제

dhdh-study.tistory.com

 

 

 

μ΅œμ’… μ½”λ“œ
class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = new int[2];
        answer[0] = (denom2*numer1 + denom1*numer2);
        answer[1] = (denom1*denom2);
        
        //μ΅œλŒ€κ³΅μ•½μˆ˜ κ΅¬ν•˜κΈ°
        int min = (answer[0]<answer[1]) ? answer[0] : answer[1];
        int gcd=1;
        for(int i=1; i<=min; i++){
            if(answer[0]%i==0 && answer[1]%i==0){
                gcd = i;
            }
        }
        
        answer[0] = answer[0] / gcd;
        answer[1] = answer[1] / gcd;
        
        return answer;
    }
}

 

 

λ°˜μ‘ν˜•