์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ํฐ ์ˆ˜๋ฅผ ์ž‘์€ ์ˆ˜๋กœ ๋‚˜๋ˆ„๊ณ , ๊ทธ ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์† ๋‚˜๋ˆ„์–ด ๋‚˜๊ฐ€๋ฉด์„œ
 ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋  ๋•Œ์˜ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด๊ฑธ ๋ฐ˜๋ณตํ•ด์„œ ๊ณ„์‚ฐํ•˜๋ฉด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD) ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ ๋‚˜๋ˆ—์…ˆ์„ ๋ฐ˜๋ณตํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์›๋ฆฌ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

 

์™œ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์ด ํ•„์š”ํ•œ๊ฐ€?

 

๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ์•ฝ์ˆ˜๋ฅผ ๋‹ค ์ฐพ์•„ ๋น„๊ตํ•˜๋ฉด ๋„ˆ๋ฌด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

๊ทธ๋ž˜์„œ ๋” ํšจ์œจ์ ์œผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.


์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์˜ ์›๋ฆฌ

๋‘ ์ˆ˜ a์™€ b๊ฐ€ ์žˆ์„ ๋•Œ (๋‹จ, a > b๋ผ๊ณ  ๊ฐ€์ •):

1. a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค.

   ์ด ๋‚˜๋จธ์ง€๋ฅผ r์ด๋ผ๊ณ  ํ•˜์ž.

 

2. a๋ฅผ b๋กœ ๋ฐ”๊พธ๊ณ , b๋ฅผ r๋กœ ๋ฐ”๊ฟ”.

๋‹ค์‹œ ๋งํ•ด, ๋” ์ž‘์€ ์ˆ˜์™€ ๋‚˜๋จธ์ง€์˜ ๊ด€๊ณ„๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค.

 

3. ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜๋Š” ์ˆœ๊ฐ„, ๊ทธ๋•Œ์˜ b๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)๊ฐ€ ๋œ๋‹ค.

 

์˜ˆ์‹œ๋กœ ์ดํ•ดํ•˜๊ธฐ

12์™€ 18์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด ๋ณด์ž.

1. ํฐ ์ˆ˜ 18์„ ์ž‘์€ ์ˆ˜ 12๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค.

    ๊ทธ๋ž˜์„œ ๋‚˜๋จธ์ง€ 6์ด๋‹ค.

2. ์ด์ œ 18์„ 12๋กœ ๋ฐ”๊พธ๊ณ , 12๋ฅผ ๋‚˜๋จธ์ง€ 6์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

๋‹ค์‹œ ๋‚˜๋ˆˆ๋‹ค: 

3. ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜์—ˆ๋‹ค!

 

์ด๋•Œ์˜ ๊ฐ’ 6์ด ๋ฐ”๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)์ด๋‹ค.

 

์ฝ”๋“œ๋กœ ๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹ค. 

public int gcd(int a, int b) {
    if (b == 0) return a; // ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด a๊ฐ€ GCD
    return gcd(b, a % b); // b์™€ ๋‚˜๋จธ์ง€(a % b)๋กœ ๋‹ค์‹œ GCD ํ•จ์ˆ˜ ํ˜ธ์ถœ
}

 

 

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์˜ ์žฌ๊ท€ ๊ฐœ๋…

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ์žฌ๊ท€ ํ•จ์ˆ˜์˜ ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค
์žฌ๊ท€ ํ•จ์ˆ˜๋ž€ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์˜ ์›๋ฆฌ
๋‘ ์ˆ˜ a์™€ b(a > b)๊ฐ€ ์žˆ์„ ๋•Œ:
GCD(a, b)๋Š” GCD(b, a % b)์™€ ๊ฐ™๋‹ค.
• a % b๋Š” a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋‹ค.
• ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜๋ฉด, ๊ทธ๋•Œ์˜ b๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD)๋‹ค.

์žฌ๊ท€ ํ•จ์ˆ˜ ์‹คํ–‰ ๊ณผ์ • ์˜ˆ์‹œ

์˜ˆ๋ฅผ ๋“ค์–ด, gcd(12, 18)๋ฅผ ๊ตฌํ•ด ๋ณด์ž:
1. ์ฒซ ํ˜ธ์ถœ:
gcd(12, 18) → ๋‚˜๋จธ์ง€ 12 % 18 = 12
๋‹ค์Œ ํ˜ธ์ถœ: gcd(18, 12)
2. ๋‘ ๋ฒˆ์งธ ํ˜ธ์ถœ:
gcd(18, 12) → ๋‚˜๋จธ์ง€ 18 % 12 = 6
๋‹ค์Œ ํ˜ธ์ถœ: gcd(12, 6)
3. ์„ธ ๋ฒˆ์งธ ํ˜ธ์ถœ:
gcd(12, 6) → ๋‚˜๋จธ์ง€ 12 % 6 = 0
๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฏ€๋กœ 6์„ ๋ฐ˜ํ™˜.

์ตœ์ข… ๊ฒฐ๊ณผ: GCD(12, 18) = 6

1. ๊ธฐ๋ณธ ์œ ํ˜• - ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ

 

๋ฌธ์ œ

๋‘ ์ •์ˆ˜ a์™€ b๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ๋‘˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(GCD) ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

ํ’€์ด ๊ณผ์ •

1. ๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

2. ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์‚ฌ์šฉํ•ด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค:

ํฐ ์ˆ˜๋ฅผ ์ž‘์€ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ณ„์† ๊ณ„์‚ฐํ•œ๋‹ค.

๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜๋Š” ์ˆœ๊ฐ„, ์ž‘์€ ์ˆ˜๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋‹ค.

 

import java.util.Scanner;

public class Main {
     // ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์œผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
     public static int gcd(int a, int b) {
         if (b == 0) return a; //๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด a๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
         return gcd(b, a % b); // ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœ
     }
     
     public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       int a = sc.nextInt();
       int b = sc.nextInt();
       
       System.out.println("์ตœ๋Œ€๊ณต์•ฝ์ˆ˜: " + gcd(a, b));
     }
}


2. ์‘์šฉ ์œ ํ˜• - ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ

 

๋ฌธ์ œ

๋‘ ์ˆ˜ a์™€ b์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM) ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

ํ’€์ด ๊ณผ์ •

1. ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค:

 

2. ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์œผ๋กœ ๋จผ์ € ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•œ ํ›„, ์œ„์˜ ์‹์„ ํ†ตํ•ด ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

 

import java.util.Scanner;

public class Main {
   // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
   public static int gcd(int a, int b) {
     if (b == 0) return a;
     return gcd(b, a % b);
   }
   
   // ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ
   public static int lcm(int a, int b) {
      return (a * b) / gcd(a, b); //LCM๊ณต์‹
   }
   
   public staic void main(String[] args) {
     Scanner sc = new Scanner(System.in);
     int a = sc.nextInt();
     int b = sc.nextInt();
     
     System.out.println("์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜: " + lcm(a, b));
   }
}


 

3. ๋ฌธ์ œ ์œ ํ˜• - ๋ฐฐ์—ด์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ

 

๋ฌธ์ œ

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ, ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๋ฅผ ๊ตฌํ•˜์‹œ์˜ค.

 

ํ’€์ด ๊ณผ์ •

1. ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜:

  ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ GCD๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

   • ์˜ˆ: GCD(GCD(1๋ฒˆ, 2๋ฒˆ), 3๋ฒˆ) … ์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณตํ•œ๋‹ค.

2. ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜:

  ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ LCM์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

   • ์˜ˆ: LCM(LCM(1๋ฒˆ, 2๋ฒˆ), 3๋ฒˆ) … ์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

public class Main {
   // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
   public static int gcd(int a, int b) {
     if (b == 0) return a;
     return gcd(b, a % b);
   }
   
   // ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ
   public static int lcm(int a, int b) {
       return (a * b) / gcd(a, b);
   }
   
   public static void main(String[] args) {
      int [] arr = {12, 18, 24}; // ์ž…๋ ฅ ๋ฐฐ์—ด
      
      // ๋ฐฐ์—ด์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
      int resutlGCD = arr[0];
      for (int i = 1; i < arr.length; i++) {
          resultGCD = gcd(resultGCD, arr[i]);
      }
      
      // ๋ฐฐ์—ด์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ
      int resultLCM = arr[0];
      for (int i = 1; i < arr.length; i++) {
          resultLCM = lcm(resultLCM, arr[i]);
      }
      
      System.out.println("๋ฐฐ์—ด์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜: " + resultGCD);
      System.out.println("๋ฐฐ์—ด์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜: " + resultLCM);
   }
}

์ฝ”๋“œ ํ•ด์„

๋ชฉํ‘œ: ๋ฐฐ์—ด {12, 18, 24}์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ.

๊ณผ์ •: ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ์— ๋Œ€ํ•ด ๋‘ ์ˆ˜์˜ GCD๋ฅผ ์ฐจ๋ก€๋กœ ๊ตฌํ•ด๋‚˜๊ฐ„๋‹ค.

 

๋‹จ๊ณ„๋ณ„ ๋™์ž‘

1. resultGCD๋ฅผ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

   ์˜ˆ: resultGCD = arr[0] = 12

2. for ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด์˜ ๋‚˜๋จธ์ง€ ์›์†Œ๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ์ˆœํšŒํ•œ๋‹ค.

3. resultGCD = gcd(resultGCD, arr[i])๋ฅผ ํ†ตํ•ด ํ˜„์žฌ GCD์™€ ๋‹ค์Œ ์›์†Œ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ๊ทธ ๊ฐ’์„ resultGCD์— ์ €์žฅํ•œ๋‹ค.

     ์˜ˆ:

     • ์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต (i = 1): gcd(12, 18)  6

         → resultGCD = 6

     • ๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต (i = 2): gcd(6, 24)  6

         → resultGCD = 6

4. ๋ฐ˜๋ณต์ด ๋๋‚˜๋ฉด resultGCD์— ๋ฐฐ์—ด ์ „์ฒด์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ์ €์žฅ๋œ๋‹ค.

 

์žฌ๊ท€๊ฐ€ ๋ฐฐ์—ด ์ „์ฒด์— ์ ์šฉ๋˜๋Š” ๊ณผ์ •

์•ž์„œ ์„ค๋ช…ํ•œ ๋ฐฐ์—ด ์ „์ฒด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ ์ฝ”๋“œ์—์„œ๋Š” gcd ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ํ˜ธ์ถœํ•ด์„œ ๊ฐ ์›์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋น„๊ตํ•œ๋‹ค.

1. ์ดˆ๊ธฐ๊ฐ’: resultGCD = arr[0]

2. ์ฒซ ๋ฐ˜๋ณต:

gcd(resultGCD, arr[1]) → ๋‘ ์›์†Œ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•จ.

3. ๋‹ค์Œ ๋ฐ˜๋ณต:

์ด์ „๊นŒ์ง€์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜(resultGCD)์™€ ๋‹ค์Œ ์›์†Œ(arr[i])๋ฅผ ๋น„๊ตํ•ด์„œ ๋‹ค์‹œ GCD๋ฅผ ๊ตฌํ•จ.

4. ๋ฐ˜๋ณต ๋:

์ตœ์ข… resultGCD๋Š” ๋ฐฐ์—ด ์ „์ฒด์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋‹ค.

 


 

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•˜๋Š” ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•ด ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹œํ—˜์—์„œ๋Š” ๋‘ ์ˆ˜๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ๋ณธ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋ฐฐ์—ด ์ „์ฒด๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ณ ๊ธ‰ ๋ฌธ์ œ๊นŒ์ง€ ์ถœ์ œ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ฐจ๊ทผ์ฐจ๊ทผ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

+ Recent posts