프로그래머스_N개의 최소공배수

LeeYulhee·2023년 9월 23일
0

💻 문제 출처 : 프로그래머스_N개의 최소공배수

👉 내가 작성한 답


class Solution {
    public int solution(int[] arr) {

        int totalGcd = 0;
        int lcm = arr[0];
        
        for(int i = 1; i < arr.length; i++) {
            
            // 전에 계산한 값(최소공배수)과 현재 값의 최대공약수 구하기
            totalGcd = gcd(lcm, arr[i]);
            // 위에 인수로 들어간 두 수의 최소공배수를 구함
            lcm = lcm * arr[i] / totalGcd;
        }

        return lcm;
    }
    
    public int gcd(int a, int b) {
        
        if(b == 0) return a;
        
        int temp = a;
        a = b;
        b = temp % b;

        return gcd(a, b);
    }
}
  • 📌 접근 방식
    • 첫 번째 수와 두 번째 수의 최소공배수를 구함
    • 구한 최소공배수와 세 번째 수의 최소공배수를 구함
    • 위 과정 반복
  • 📌 문제 풀이 설명
    • int 변수 totalGcd를 선언하고 0으로 초기화
    • int 변수 lcm을 선언하고 arr 배열의 0번째 값으로 초기화
    • for문으로 1부터 arr의 길이 미만까지 1씩 증가하며 순회
      • gcd 메서드에 lcm과 arr[i]를 인수로 전달한 결과 값을 totalGcd에 대입
        • gcd 메서드
          • 인자로 int 변수 a, b를 받음
          • 만약 b가 0이면 a를 return
            • 나머지를 0으로 만든 수가 최대공약수
          • int 변수 temp에 a를 넣음
          • a에 b를 넣음
          • b에 temp 와 b를 나눈 나머지를 넣음
          • return gcd(a, b) 로 재귀 형태
            • b가 0이 되어 return이 생길 때까지 반복
      • lcm에 lcm * arr[i]를 한 뒤 totalGcd로 나눈 값을 대입
        • 최소공배수를 구하는 과정
    • for문 종료 후 return lcm
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글