내가 작성한 코드
- 로직 설명
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. 코드 말고 로직을 기억해뒀다가 비슷한 문제가 나오면 사용하자 ...
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[Java] 배열 기본 오답노트 (0) | 2024.05.05 |
---|---|
[프로그래머스/알고kit/해시] 폰켓몬 (1) | 2024.03.07 |
[BOJ23971/Python] ZOAC 4 (2) | 2024.03.05 |
[프로그래머스/알고kit/DFS,BFS] 타겟 넘버 (1) | 2024.01.27 |
[프로그래머스/알고kit/그리디] 체육복 (0) | 2024.01.21 |