구미구미
디지털 노마드를 꿈꾸며
구미구미
전체 방문자
오늘
어제
  • 분류 전체보기 (28)
    • 알고리즘 (15)
      • 개념정리 (1)
      • 문제풀이 (13)
    • 웹 개발 (11)
      • HTML · CSS (0)
      • JS · TS (3)
      • React · Next.js (6)
      • Node.js (0)
    • TIL (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트
  • 이코테
  • 백준
  • 프론트엔드
  • 개발
  • 코딩테스트
  • I18N
  • 풀스택
  • react
  • 블록체인
  • javascript
  • 알고리즘
  • typescript
  • 리액트
  • 파이썬
  • 웹개발 #자바스크립트 #타입스크립트 #JS #TS
  • 프로그래머스
  • next.js
  • nextjs
  • 백엔드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
구미구미

디지털 노마드를 꿈꾸며

알고리즘/개념정리

[알고리즘] 최대공약수, 최소공배수, 유클리드 호제법

2023. 3. 11. 14:58

✅ 최대공약수

1. 완전 탐색(Brute Force)

두 자연수 a, b (a <= b)의 최대공약수를 구할 때 a부터 1까지의 모든 자연수로 두 수를 나누면서 두 수가 나누어 떨어지는 가장 큰 수를 찾는 방법.

 

const gcd = (num1, num2) => {
  const min = num1 < num2 ? num1 : num2;
  for (let i = min; i > 0; i--) {
    if (num1 % i === 0 && num2 % i === 0) {
      return i;
    }
  }
}

 

2. 유클리드 호제법

유클리드 호제법을 이용해 재귀적으로 최대공약수를 구하는 방법.

 

const gcd = (num1, num2) => {
  if (num2 === 0) return num1;
  return gcd(num2, num1 % num2);
}

 

✅ 최소공배수

두 자연수 a, b의 최대공배수는 a * b / (a, b의 최대공약수)라는 공식으로 쉽게 구할 수 있다.

 

const lcm = (num1, num2) => {
  return num1 * num2 / gcd(num1, num2);
}

 

 

✏️ 관련 문제

https://school.programmers.co.kr/learn/courses/30/lessons/120808

    구미구미
    구미구미

    티스토리툴바