티스토리 뷰

최대공약수를 구하는 방법은 몇 번 스쳐지나가듯 봤는데,
최소공배수에 대한 부분은 잘 알지 못했다.
그래서 우선 최대공약수와 최소공배수의 관계를 정의해보았다.
최대공약수와 최소공배수의 관계
최대공약수와 최소공배수를 구하는 방법을 이해했나요? 대부분의 경우에 최대공약수와 최소공배수는 소인수분해를 이용하는 방법으로 구해요. 이 방법은 초등학교 때 많이 해봤던 방법이니까
mathbang.net
정수론 (1) - 최대공약수, 최소공배수, 유클리드 호제법
안녕하세요, Dimen입니다! 오늘부터 정수론에 대한 글을 써보고자 합니다. 정수론은 정규 수학 교육과정에서 잘 다루지 않기 때문에 많은 분들에게 생소한 분야입니다. 그런 만큼 많은 분들에게
dimenchoi.tistory.com
최대공약수: 두 정수 a, b의 공통 약수
최소공배수: 두 정수 a, b의 공통 배수 중 가장 작은 값
최대공약수는 유클리드 호제법으로 구할 수 있다.
1. 정수 a를 b로 나눈 나머지 r을 구한다.
2. a = b, b = r로 갱신한다.
3. 나머지가 0이 될 때까지 반복한다.
최소공배수는 최대공약수를 활용해 구할 수 있다.
1. 정수 a, b를 곱한 mul을 구한다.
2. mul을 최대공약수로 나눈다.
이렇게 찾은 정수론으로 구하는 코드는 다음과 같다.
function solution(a, b) {
function gcd(x, y) {
while (y !== 0) {
let temp = y;
y = x % y;
x = temp;
}
return x;
}
function lcm(x, y, gcdValue) {
return (x * y) / gcdValue;
}
const gcdValue = gcd(a, b);
const lcmValue = lcm(a, b, gcdValue);
return [gcdValue, lcmValue];
}
그러다가 미친 코드를 봤다.
function gcdlcm(a, b) {
var r;
for(var ab= a*b;r = a % b;a = b, b = r){}
return [b, ab/b];
}
구현 로직은 똑같은데 더 간결한 코드다.
for문 내부에 실행 구문이 없다는 부분에서 큰 의의가 있다.
r = a % b
이 조건 검사절 때문인데, 0이 되면 알아서 종료되기 때문이다.
증감표현식에 두 개가 들어갈 수 있단 것도 처음 배웠다.
'Oops, All Code! > 🤯 Oops, My Algorithm!' 카테고리의 다른 글
| ♡̈ 19. 프로그래머스:: 내적 (0) | 2024.07.13 |
|---|---|
| ♡̈ 18. 프로그래머스:: 행렬의 덧셈 (2) | 2024.07.13 |
| ♡̈ 16. 프로그래머스:: 콜라츠 추측 (0) | 2024.07.13 |
| ♡̈ 15. 프로그래머스:: 서울에서 김 서방 찾기 (0) | 2024.07.12 |
| ♡̈ 14. 프로그래머스:: 약수의 합 (0) | 2024.07.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 카페추천
- javascript
- 책추천
- 프로토타입
- 코딩테스트
- 대학생팝업스토어
- 소사벌
- 어휘력
- 도서추천
- 경험플리마켓
- typescript
- 부스트캠프
- 네이버부스트캠프
- 웹풀스택
- 안성스타필드
- 어른의어휘공부
- 일급객체
- 도서리뷰
- 대학생플리마켓
- 회고
- 프론트엔드
- react
- 서평
- 카드뉴스
- 프리코스
- 소사벌맛집
- js
- 우아한테크코스
- 트러블슈팅
- 비즈플리마켓
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함