쉬움 0명 해결 정답률 0%

최소공배수

두 값 모두로 나누어떨어지는 가장 작은 양수를 구하세요.

배우게 될 내용

  • 최대공약수로 최소공배수 구하기
  • 곱하기 전에 나눠 오버플로 피하기
  • 함수 안에서 다른 함수 재사용하기

문제

원문 보기 (영어)

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에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.