[프로그래머스][Level2][Java] N개의 최소공배수

2022. 3. 6. 17:48·프로그래머스/Level 2

문제

 

풀이코드

public int solution(int[] arr) {            //N개의 최소공배수
    int answer = LCM(arr[0],arr[1]);        //우선 답에 주어진 숫자배열의 첫번째, 두번째의 최소공배수를 넣는다.
    if(arr.length>1){                       //주어진 숫자의 갯수가 1개보다 많을 때,
        for(int i = 2;i<arr.length;i++){    //나머지 숫자들의 최소공배수를 구한다.
            answer = LCM(answer,arr[i]);
        }
    }else{                                  //주어진 숫자의 갯수가 1개일때,
        answer = arr[0];                    //제일 처음 주어진 수가 최소공배수이다.
    }
    return answer;
}

public int LCM(int a, int b){               //최소 공배수를 구하는 메서드
    return (a*b)/GCD(a,b);
}
public int GCD(int a, int b){               //최대공약수를 구하는 메서드(유클리드 호제법을 이용)
    if((a%b) == 0){
        return b;
    }else{
        return GCD(b,a%b);
    }
}

이렇게 풀었는데 이게 원리만 알면 생각보다 쉽게쉽게 풀 수 있다!

 

우선 최소공배수를 구하는 방법은 간단히 몇몇의 수들을 인수분해 한다음에 구해보면 알지만

두 수의 곱/두 수의 최대공약수 이 공식을 쓰면 두 수의 최소공배수가 나온다.

 

그래서 두 수의 최대공약수를 구하는 메서드 GCD를 만들었는데 두 수의 최대공약수를 구하는 방법은

유클리드 호제법을 이용하여 메서드를 만들었다.

유클리드 호제법에 관련된 내용은 https://github.com/crupy/TIL/blob/master/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/%EC%8B%A4%EC%A0%84%20%EA%B0%9C%EB%85%90/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C%20%ED%98%B8%EC%A0%9C%EB%B2%95.md

 

GitHub - crupy/TIL: Today I Learned. 하루하루 공부한 내용들을 정리

:computer: Today I Learned. 하루하루 공부한 내용들을 정리 . Contribute to crupy/TIL development by creating an account on GitHub.

github.com

여기에 포스팅을 해놓았다.

 

이렇게 최대공약수, 최소공배수만 구하면 이제 문제는 다 풀었다.

처음 두 수의 최소공배수를 구하고, 그 최소공배수와 그다음 수의 최소공배수를 구하고, 이것을 반복하면 여러 숫자들의 최소공배수를 쉽게 구할 수 있다.

저작자표시 비영리 (새창열림)

'프로그래머스 > Level 2' 카테고리의 다른 글

[프로그래머스][Level2][Java] 숫자의 표현  (0) 2022.03.08
[프로그래머스][Level2][Java] 최솟값 만들기  (0) 2022.03.07
[프로그래머스][Level2][Java] 피보나치 수  (0) 2022.03.07
[프로그래머스][Level2][Java] 행렬의 곱셈  (0) 2022.03.07
[프로그래머스][Level2][Java] JadenCase 문자열 만들기  (0) 2022.03.06
'프로그래머스/Level 2' 카테고리의 다른 글
  • [프로그래머스][Level2][Java] 최솟값 만들기
  • [프로그래머스][Level2][Java] 피보나치 수
  • [프로그래머스][Level2][Java] 행렬의 곱셈
  • [프로그래머스][Level2][Java] JadenCase 문자열 만들기
BvrPark
BvrPark
코드 퍼즐과 개발 일상
  • BvrPark
    비버의 개발 일지
    BvrPark
  • 전체
    오늘
    어제
    • 분류 전체보기 (121)
      • JAVA (7)
        • 메서드 외울 것 (2)
      • 프로그래머스 (56)
        • 총 풀이 코드(깃허브) (1)
        • Level 1 (22)
        • Level 2 (33)
      • 백준 알고리즘(단계 별) (16)
        • 총 풀이 코드(깃허브) (1)
        • 1. 입출력과 사칙연산 (2)
        • 2. if 문 (2)
        • 3. for문 (1)
        • 4. while문 (2)
        • 5. 1차원 배열 (3)
        • 6. 함수 (1)
        • 7. 문자열 (1)
        • 8. 기본수학 1 (3)
      • 백준 알고리즘(solved.ac) (9)
        • 총 풀이 코드(깃허브) (1)
        • class2 (8)
      • LeetCode 문제 풀이 (4)
        • 총 풀이 코드(깃허브) (1)
        • Easy (3)
      • 코드업 알고리즘 (7)
      • git과 github사용법 (4)
      • html, css, javaScript (2)
      • 프로젝트 (11)
        • 순수 Java 프로젝트 (2)
        • 쇼핑몰 프로젝트 (2)
        • 게시판 프로젝트 (5)
        • 근태관리 프로젝트 (2)
      • 커피타임 (2)
        • 2023년 (2)
        • 2024년 (0)
  • 블로그 메뉴

    • 링크

      • 포트폴리오
      • 깃허브
    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • Designed By정상우
    BvrPark
    [프로그래머스][Level2][Java] N개의 최소공배수
    상단으로

    티스토리툴바