문제
a와 b의 최소공배수, 즉 두 수 모두로 나누어떨어지는 가장 작은 양수를 반환하세요. lcm(a, b) = a / gcd(a, b) × b.
lcm(a, b)를 구현하세요.
입력
a: 첫 번째 양의 정수입니다. b: 두 번째 양의 정수입니다.
출력
lcm(a, b)를 반환하세요.
제약 조건
1 ≤ a, b ≤ 1,000,000,000
예시
예시 1
입력:
a = 4
b = 6
예상 출력:
expected = 12
입력:
long long a = 4;
long long b = 6;
예상 출력:
long long expected = 12;
입력:
long a = 4;
long b = 6;
예상 출력:
long expected = 12;
설명
4의 배수: 4, 8, 12…; 6의 배수: 6, 12…; 처음으로 겹치는 수는 12입니다.
예시 2
입력:
a = 7
b = 7
예상 출력:
expected = 7
입력:
long long a = 7;
long long b = 7;
예상 출력:
long long expected = 7;
입력:
long a = 7;
long b = 7;
예상 출력:
long expected = 7;
설명
자기 자신과의 최소공배수는 자기 자신입니다: 7.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
나열해서 찾지 말고 gcd와 lcm의 관계를 활용하세요.
힌트 2
먼저 gcd를 구한 뒤, 두 수를 조심해서 결합하세요.
힌트 3
큰 입력에서도 오버플로 위험을 줄이려면 곱하기 전에 나누세요.
예상 복잡도
시간 O(log min(a, b)), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.