
이 문제는 아주 쉬운 기초문제지만 최소공배수를 표현하는 법을 잊지 않기 위해 블로그에 남기기로 했다.
초기 내 코드
class Solution {
public int[] solution(int n, int m) {
int[] arr = new int[2];
if (n % m == 0) {
arr[0] = m;
arr[1] = n;
} else if (m % n == 0) {
arr[0] = n;
arr[1] = m;
} else {
for (int i=1; i<Math.max(n, m); i++) {
if (m % i == 0 && n % i ==0) {
arr[0] = i;
int Num1 = m / i;
int Num2 = n / i;
arr[1] = i * Num1 * Num2;
}
}
}
return arr;
}
}
최소 공배수를 구하는 코드를 보면 두 수를 최대 공약수로 나눈 값을 저장하는 Num1, Num2 변수 두 개를 생성하여
"최대 공약수 * Num1 * Num2" 와 같이 세 수를 곱하는 방식을 선택했다.
그러나 더 좋은 표현 방법이 있다는 것을 알게되었다.
arr[1] = n * m / arr[0];
다음과 같이 두 수의 곱을 최대공약수로 나누는 것이다.
초등 수학 레벨이지만 내가 작성했던 직관적인 방식 보다 코드도 짧고 변수를 새로 만들 필요도 없어서 유용해보인다.
'PS' 카테고리의 다른 글
| [프로그래머스] 시저 암호 (0) | 2026.06.30 |
|---|---|
| [프로그래머스] 이상한 문자 만들기 (0) | 2026.06.25 |
| [프로그래머스] 두 개 뽑아서 더하기 (1) | 2026.06.12 |
| [프로그래머스] 원하는 문자열 찾기 (0) | 2026.06.02 |
| [프로그래머스] 홀짝에 따라 다른 값 반환하기 (0) | 2026.05.15 |