๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - (Level2)N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

by ์ฃผ๋ฐœ2 2020. 3. 13.
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/12953

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

์ฝ”๋“œ

class Solution {
    
    // ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜
    public int GCD(int a, int b){      
        if(a<b){
            int temp = a;
            a = b;
            b = temp;
        }
        if(b == 0)      return a;
        else            return GCD(b, a%b);
    }
    
    // ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ - a*b / ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
    public int LCM(int a, int b){
        return a*b / GCD(a, b);
    }
    
  public int solution(int[] arr) {
      int answer = arr[0];
      for(int i=1; i<arr.length; i++)
          answer = LCM(answer, arr[i]);
      return answer;
  }
}

ํ’€์ด

์œ ํด๋ฆฌ๋“œํ˜ธ์ œ๋ฒ• ์„ ์ด์šฉํ•ด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜์—ฌ ํ’€์—ˆ๋‹ค.

N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ๊ฐ๊ฐ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๊ตฌํ•ด์ฃผ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค.

A, B, C, D ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” --> ((A&B)  & C) & D ์ฒ˜๋Ÿผ ๋‘ ๊ฐœ์”ฉ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

 

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ• ๋•Œ, GCD(int a, int b) ๋‘ ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ a์˜๊ฐ’์ด b์˜๊ฐ’๋ณด๋‹ค ์ปค์•ผํ•˜๋ฏ€๋กœ, GCD ๋ฉ”์†Œ๋“œ์—์„œ

๊ฐ€์žฅ ๋จผ์ € a์˜ ๊ฐ’๊ณผ b์˜ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€