Back-end/Algorithm

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜ (java)

Nellie Kim 2023. 8. 4. 23:55
728x90

πŸ’‍♀️  문제 μ„€λͺ…

두 수λ₯Ό μž…λ ₯λ°›μ•„ 두 수의 μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄ λ³΄μ„Έμš”. λ°°μ—΄μ˜ 맨 μ•žμ— μ΅œλŒ€κ³΅μ•½μˆ˜, κ·Έλ‹€μŒ μ΅œμ†Œκ³΅λ°°μˆ˜λ₯Ό λ„£μ–΄ λ°˜ν™˜ν•˜λ©΄ λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 두 수 3, 12의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” 3, μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 12μ΄λ―€λ‘œ solution(3, 12)λŠ” [3, 12]λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.


❌ μ œν•œμ‚¬ν•­

  • 두 μˆ˜λŠ” 1이상 1000000μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

 

 

πŸ’‘  μž…μΆœλ ₯ 예

 

μž…μΆœλ ₯ μ˜ˆ #1
λ³Έλ¬Έκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ μ˜ˆ #2
μžμ—°μˆ˜ 2와 5의 μ΅œλŒ€κ³΅μ•½μˆ˜λŠ” 1, μ΅œμ†Œκ³΅λ°°μˆ˜λŠ” 10μ΄λ―€λ‘œ [1, 10]을 리턴해야 ν•©λ‹ˆλ‹€.

 

 

πŸ‘© λ‚΄ 풀이

class Solution {
    // μ΅œλŒ€κ³΅μ•½μˆ˜ κ΅¬ν•˜λŠ” ν•¨μˆ˜ (μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•)
    int gcd(int n, int m) {
        int r;
        while(m > 0) {
            r = n % m;
            n = m;
            m = r;
        }
        return n;
    }
    
    public int[] solution(int n, int m) {
        int[] answer = new int[2];

        // 두 μˆ˜μ—μ„œ 더 큰 수λ₯Ό n으둜 지정
        if(n < m) {
            int temp = n;
            n = m;
            m = temp;
        }
        
        // μ΅œλŒ€κ³΅μ•½μˆ˜ κ΅¬ν•˜κΈ°
        answer[0] = gcd(n, m);
        
        // μ΅œμ†Œκ³΅λ°°μˆ˜ κ΅¬ν•˜κΈ°
        answer[1] = n * m / answer[0];
        
        return answer;
    }
}

μ‰¬μš΄ 문제라고 μƒκ°ν–ˆλŠ”λ° κΈ‰ λ§‰ν˜”λ‹€.. μœ ν΄λ¦¬λ“œ ν˜Έμ œλ²•μ΄λΌλŠ” ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€κ³  ν•œλ‹€.

이 방법은 μ™Έμš°κ³  μžˆμ–΄μ•Όκ² λ‹€. μƒμ†Œν•œ λ¬Έμ œμ˜€λ‹€.