CS/알고리즘 문제 풀이

[코드트리 조별과제] Java 최소공배수 구하기 💛코드 업그레이드💛

아모르AMORE 2024. 8. 15. 15:06

내가 작성한 코드

- 로직 설명

1. printLCM (두 개의 정수를 인자로 받는 함수) -- > 최소공배수를 출력함

2. printLCM 의 로직

3. 정수 n,m 각각에 서로보다 작은 수를 계속 곱해봄

4. 곱해진 수가 처음으로 일치할 때만 result 를 갱신해서 출력함

import java.util.Scanner;

public class Main {

    public static void printLCM(int n, int m) {
        int tmp1 = 0;
        int tmp2 = 0;
        int result = 0xfffff;
        for (int i=1; i<m+1; i++) {
            tmp1 = n * i;
            for (int j=1; j<n+1; j++) {
                tmp2 = m * j;
                if (tmp1 == tmp2) {
                    if (result > tmp2) {
                        result = tmp2;
                        System.out.println(result);
                    }
            }}
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        printLCM(n,m);
    }
}

 

해설 코드

- 로직 설명

1. n,m 중 작은 수까지의 값으로

2. n,m 을 나눠봄

3. 둘다 나머지가 0일 때 값이 최대공약수임

4. n * m / 최대공약수 = 최소공배수

import java.util.Scanner;

public class Main {
    // n과 m의 최소공배수를 출력합니다.
    public static void findLCM(int n, int m) {
        int gcd = 0;
        for(int i = 1; i <= Math.min(n, m); i++) {
            if(n % i == 0 && m % i == 0)
                gcd = i;
        }
    
        System.out.print(n * m / gcd);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 변수 선언 및 입력:
        int n = sc.nextInt();
        int m = sc.nextInt();

        findLCM(n, m);
    }
}

 

 

총평

1. 수학적 개념을 까먹어서 코드가 지저분해진 것 같다.

2. 코드 말고 로직을 기억해뒀다가 비슷한 문제가 나오면 사용하자 ...