[BOJ] ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ - ๋ฐฑ์ค€ 1934 (JAVA) - ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

    ๐Ÿ“Œ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

    ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

     

    1. ํฐ ์ˆ˜๋ฅผ ์ž‘์€ ์ˆ˜๋กœ ๋‚˜๋ˆ„๋Š” MOD ์—ฐ์‚ฐ (๋‚˜๋จธ์ง€ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ)
     
    2. ์•ž ๋‹จ๊ณ„์—์„œ์˜ ์ž‘์€ ์ˆ˜์™€ ๋‚˜๋จธ์ง€๋กœ MOD ์—ฐ์‚ฐ
     
    3. ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋  ๋•Œ์˜ ์ž‘์€ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
     

    ์˜ˆ์‹œ)

     

    1. 22 % 6 = 4 (๋‚˜๋จธ์ง€)

     

    2. 6 % 4 = 2

     

    3. 4 % 2 = 0

     

    -> gcd(6 , 22) = 2

    ๐Ÿ”’ ๋‚˜๋จธ์ง€ ํ•ฉ - ๋ฐฑ์ค€ 10986

    https://www.acmicpc.net/problem/10986

     

    ๋ฌธ์ œ

    ๋‘ ์ž์—ฐ์ˆ˜ A์™€ B์— ๋Œ€ํ•ด์„œ, A์˜ ๋ฐฐ์ˆ˜์ด๋ฉด์„œ B์˜ ๋ฐฐ์ˆ˜์ธ ์ž์—ฐ์ˆ˜๋ฅผ A์™€ B์˜ ๊ณต๋ฐฐ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฐ ๊ณต๋ฐฐ์ˆ˜ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 6๊ณผ 15์˜ ๊ณต๋ฐฐ์ˆ˜๋Š” 30, 60, 90๋“ฑ์ด ์žˆ์œผ๋ฉฐ, ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋Š” 30์ด๋‹ค.

    ๋‘ ์ž์—ฐ์ˆ˜ A์™€ B๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, A์™€ B์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

     

    ์ž…๋ ฅ

    ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T(1 ≤ T ≤ 1,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ T๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ A, B ≤ 45,000)

     

    ์ถœ๋ ฅ

    ์ฒซ์งธ ์ค„๋ถ€ํ„ฐ T๊ฐœ์˜ ์ค„์— A์™€ B์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

    ๐Ÿ”‘ ํ•ต์‹ฌ ์•„์ด๋””์–ด

    • a, b์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = a * b / gcd(a,b)
    • gcd๋Š” ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์œผ๋กœ ๊ตฌํ˜„

    gcd, gcd1, gcd2 ๋ชจ๋‘ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ๊ตฌํ˜„ํ•œ ๋ฉ”์„œ๋“œ๋‹ค.

     

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                int a = sc.nextInt();
                int b = sc.nextInt();
                int lcm = a*b / gcd(Math.max(a,b),Math.min(a,b));
                System.out.println(lcm);
            }
    
        }
        
        static int gcd(int max, int min){
            if(min == 0) return max;
            return gcd(min,max % min);
        }
        
        static int gcd1(int max, int min){
            int temp;
            while(max % min != 0){
                temp = max;
                max = min;
                min = temp % min;
            }
            return min;
        }
        
        static int gcd2(int max, int min){
            int temp;
            while(min != 0){
                temp = max;
                max = min;
                min = temp % min;
            }
            return max;
        }
    
    }

    ๐Ÿ”Ž N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

    int ans = arr[0];
    for (int i = 1; i < N; i++) {
        int a = Math.max(ans, arr[i]);
        int b = Math.min(ans, arr[i]);
        ans = (a * b) / gcd(a, b);
    }

    ๐Ÿ”Ž N๊ฐœ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜

    int ans = arr[0];
    for (int i = 1; i < N; i++) {
        int a = Math.max(ans, arr[i]);
        int b = Math.min(ans, arr[i]);
        ans = gcd(a, b);
    }

     


    ์ฐธ๊ณ : Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ: ์ž๋ฐ” ํŽธ - ๊น€์ข…๊ด€

    ์ฝ”ํ…Œ ์ •๋ฆฌ ๊นƒํ—ˆ๋ธŒ ๋งํฌ

     

    GitHub - HyperAlgorithmStudy/BaekJoon: Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์Šคํ„ฐ๋””

    Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์Šคํ„ฐ๋””. Contribute to HyperAlgorithmStudy/BaekJoon development by creating an account on GitHub.

    github.com

    728x90

    ๋Œ“๊ธ€