[프로그래머스,Level 2] N개의 최소공배수 (JAVA 구현)

2021. 1. 28. 12:55·CodingTest/프로그래머스(Programmers)
반응형

- 첫 풀이 및 정답풀이

  이 문제를 접하자마자 최소공배수, 최대공약수가 나오는 문제는 유클리드 호제법 알고리즘을 이용해야 한다는 사실을 알고 있었기 때문에 접근 자체는 쉬울 것이라 생각했다. 그러나, 앞서 level 1인 최소공배수, 최대공약수 문제에서는 2개의 자연수에 대해서만 적용해 보았기 때문에 N 개는 어떻게 접근해야 할지 몰랐다.

 

  N개의 최소공배수뿐 아니라 최대공약수 역시 앞서 두 개의 자연수에 대해 해당 값들을 구한 뒤, 해당 값들과 다음 값의 최대공약수, 최소공배수를 구하면 N개에 대해 구할 수 있다는 사실을 알 수 있었다. 

 

  예제 입력1을 예로 들면, 처음 두 수인 2와 6에 대해서 유클리드 호제법 알고리즘을 이용해 최대공약수 2와 최소공배수 6을 구할 수 있다. 여기서 구한 최소공배수 6과 다음 8의 최대공약수 2와 최소공배수 24를 구한다. 이를 반복하면 문제가 원하는 결과를 반환할 수 있다.

class Solution {
    
    // 5. 최대공약수 메소드, 유클리드 호제법
    public static int gcd(int a, int b){
        int x = Math.max(a,b);
        int y = Math.min(a,b);
        
        while(x % y != 0){
            int r = x % y;
            x = y;
            y = r;
        }
        
        return y;
    }
    
    public int solution(int[] arr) {
        // 1. 배열의 첫 번째 값을 저장.
        int answer = arr[0];
        
        // 2. 배열의 길이가 1이면 반복x, 그 이상은 다음 인덱스인 1부터 반복.
        for(int i = 1;i<arr.length;i++){
            // 3. 두 값의 최대공약수
            int gcd = gcd(answer,arr[i]);
            // 4. 두 값의 최소공배수
            answer = answer * arr[i] / gcd;
        }
        
        return answer;
    }
}

 

 

저작자표시 (새창열림)
'CodingTest/프로그래머스(Programmers)' 카테고리의 다른 글
  • [프로그래머스,Level 2] 괄호 변환 (JAVA 구현)
  • [프로그래머스,Level 2] 메뉴 리뉴얼 (JAVA 구현)
  • [프로그래머스,Level 2] JadenCase 문자열 만들기 (JAVA 구현)
  • [프로그래머스,Level 2] 행렬의 곱셈 (JAVA 구현)
뜸부깅
뜸부깅
코딩에 대한 여러 개인적인 생각을 정리하고 공부를 하는 공간입니다!!
  • 뜸부깅
    코오오딩
    뜸부깅
  • 전체
    오늘
    어제
    • Note (429)
      • Skill (31)
        • Java & Spring (9)
        • Javascript & HTML & CSS (0)
        • React (0)
        • Next.js (22)
      • CodingTest (389)
        • 백준 온라인 저지(BOJ) (140)
        • 프로그래머스(Programmers) (79)
        • LeetCode (170)
      • Algorithm & Data Structure (6)
      • [Project] 포트폴리오 (3)
        • Front end (3)
        • Back end (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    leetcode 2236
    프로그래머스
    boj1427
    TypeScript
    자바
    BOJ
    백준
    백준7576
    medium
    next 14
    boj2108
    meidum
    백준2751
    백준7576자바
    component-scan
    Easy
    백준1260
    Java
    백준1427
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
뜸부깅
[프로그래머스,Level 2] N개의 최소공배수 (JAVA 구현)
상단으로

티스토리툴바