프로그래머스 코딩테스트 - N개의 최소공배수

2025. 1. 22. 10:38·코딩테스트

문제 설명

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.

제한 사항

  • arr은 길이 1이상, 15이하인 배열입니다.
  • arr의 원소는 100 이하인 자연수입니다.

 

 

입출력 예

arr result
[2,6,8,14] 168
[1,2,3] 6

 

 

 

 

내가 푼 문제 풀이

최대공약수 또는 최소공배수를 구할 때 유클리드 알고리즘(호제법)을 자주 쓴다.

나도 유클리드 호제법을 사용해서 문제를 풀어봤다.

 

자세한 내용은 아래 참고!

 

유클리드 호제법(Euclidean algorithm)

유클리드 호제법이란?유클리드 호제법(Euclidean algorithm)은 유클리드 알고리즘이라고도 불리우며,두 양의 정수 혹은 자연수의 최대공약수(GCD, Greatest Common Divisor)를 구하는 효율적인 알고리즘이다.

murphy0v0.tistory.com

 

 

import java.util.Arrays;

class Solution {
    public int solution(int[] arr) {
        int val = arr[0];
        int sum = 1;
        
        for(int i=0; i<arr.length-1; i++){
            int mul = arr[i+1] * val; // 두 수의 곱
            
            if(arr[i+1] > val){       // 큰수 / 작은수를 하기 위해 구분
                val = gcd(arr[i+1], val);
            }else { 
                val = gcd(val, arr[i+1]); 
            }
            
            val = mul / val;			// 두 수의 곱 / 최대공약수
        }
        
        return val;
    }
    
    public int gcd(int a,int b){
        return a % b == 0 ? b : gcd(b, a%b);
    }
}

 

 

두 수 a와 b (a>b)의 최대공약수는 a를 b로 나눈 나머지와 b의 최대공약수와 같다.

이 과정을 반복하여 나머지가0이 될 때 나누는 수가 두 수의 최대공약수이다. 

 

a x b를 두 수의 최대공약수로 나누면 그 값이 최소공배수이다.

 

그래서 나는 arr [2,6,8,14] 테스트 케이스를 기준으로,

2와 6의 최소공배수를 구하고, 그 값과 8의 최소공배수, 그 값과 14의 최소공배수

이런식으로 순차적으로 구했다.

 

 

'코딩테스트' 카테고리의 다른 글

프로그래머스 코딩테스트 - 영어 끝말잇기 (JAVA)  (2) 2025.01.22
프로그래머스 코딩테스트 - 구명보트 (java)  (0) 2025.01.21
프로그래머스 코딩테스트 연습 - 다음 큰 숫자(java)  (2) 2025.01.15
프로그래머스 코딩테스트 연습 - 올바른 괄호 (스택/큐 java)  (1) 2025.01.15
[프로그래머스 코딩테스트 연습] 배열의 평균값 - C#  (0) 2024.06.30
'코딩테스트' 카테고리의 다른 글
  • 프로그래머스 코딩테스트 - 영어 끝말잇기 (JAVA)
  • 프로그래머스 코딩테스트 - 구명보트 (java)
  • 프로그래머스 코딩테스트 연습 - 다음 큰 숫자(java)
  • 프로그래머스 코딩테스트 연습 - 올바른 괄호 (스택/큐 java)
Murphy0v0
Murphy0v0
코딩 공부 / 일상 / 여행 / 자유 글
  • Murphy0v0
    주니어 개발자 Murphy의 코딩 저장소
    Murphy0v0
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 여행
      • 코딩테스트
        • 알고리즘
      • 코딩 공부 기록
        • C#
        • SQL
        • Java
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트연습
    넌클러스터
    MSSQL 인덱스
    프로그래머스 코딩테스트
    코딩테스트
    mssql 로컬 서버
    대용량 데이터 삭제
    오블완
    티스토리챌린지
    클러스터형인덱스
    sql 튜닝
    db table scan
    인덱스
    코딩테스트준비
    MSSQL
    mssql테이블복제
    프로그래머스
    osgi framework
    인덱스 튜닝
    sql server developer
    Java
    mssql 로컬
    sql테이블복사
    mssql 메모리
    mssqllock
    sql 잠금
    DB인덱스
    인덱스조각화
    mssql튜닝
    코딩테스트java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Murphy0v0
프로그래머스 코딩테스트 - N개의 최소공배수
상단으로

티스토리툴바