[JS] Programmers 최대공약수와 최소공배수 ☑

2022. 6. 10. 15:54·Programmers/javascript
728x90

//n과 m중 큰값과, 작은값 선언
function solution(n, m) {
    let answer = [];
    let minNum = Math.min(n, m);
    let maxNum = Math.max(n, m);
    answer[0] = gcd(minNum, maxNum);
    answer[1] = lcm(minNum, maxNum);
    return answer;
}
// 최대공약수
function gcd(minNum, maxNum){
  return (minNum % maxNum) === 0 ? maxNum : gcd(maxNum, minNum % maxNum);
}
// 최소공배수
function lcm(minNum, maxNum){
  return minNum * maxNum / gcd(minNum, maxNum);
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
// console.log(gcdlcm(3,12));

 

최대공약수(Greatest Common Divisor, GCD)

두 수 a, b의 최대공약수는 gcd(a, b) 또는 (a, b)로 나타냄.

최소공배수(Lowest Common Multiple, LCM)

두 수 a, b의 최소공배수는 lcm(a, b) 또는 [a, b]로 나타냄.

유클리드 호제법

- a,b 를 서로 나눌때, 나누어진다면 b가 최대 공약수 이다. (a>b)
- 만약 a,b가 나누어지지 않으면 b와 a를 b로 나눈 나머지를 다시 나눈다
- 서로가 나누어지면 a%b 가 최대공약수이다. 나누어지지 않는다면 위처럼 b와 a를 b를 나눈 나머지를 다시 나눈다.

 

조건연산자 ? :

조건식을 판별하여 참이냐 거짓이냐에 따라 다음 문장을 선택적으로 실행
예: max_value = (a>b) ? a : b //a,b중 큰값을 저장.

재귀함수란
어떤 함수 내부에서 다시 자기 자신을 부르는 함수를 의미한다.
마치 반복문을 돌리듯 자기 자신을 끊임없이 부르다 특정조건이 되면 빠져나오는 함수를 재귀함수라고한다.




아래는 더 짧은 다른 답안

function solution(num1, num2) {
    const gcd = (a, b) => a % b === 0 ? b : gcd(b, a % b);
    const lcm = (a, b) => a * b / gcd(a, b);
    return [gcd(num1, num2), lcm(num1, num2)];
}

 

728x90
저작자표시 비영리 변경금지

'Programmers > javascript' 카테고리의 다른 글

[JS] Programmers 정수 제곱근 판별 ☑  (0) 2022.06.10
[JS] Programmers 모의고사 ☑  (0) 2022.06.09
[JS] Programmers K번째수 ☑  (0) 2022.06.09
[JS] Programmers 이상한 문자 만들기 ☑  (0) 2022.06.08
[JS] Programmers 부족한 금액 계산하기 ☑  (0) 2022.06.08
'Programmers/javascript' 카테고리의 다른 글
  • [JS] Programmers 정수 제곱근 판별 ☑
  • [JS] Programmers 모의고사 ☑
  • [JS] Programmers K번째수 ☑
  • [JS] Programmers 이상한 문자 만들기 ☑
ReCode.B
ReCode.B
404 Brain Not Found
  • ReCode.B
    B의 개발 공부 기록
    ReCode.B
  • 전체
    오늘
    어제
  • 공지사항

    • 개인적 기록을 위한 블로그
    • 분류 전체보기 (662)
      • STUDY (517)
        • for Developer (24)
        • WEB (23)
        • HTML5 CSS3 (22)
        • JavaScript (102)
        • jQuery (30)
        • TypeScript (1)
        • JAVA (102)
        • SpringLegacy (46)
        • SpringBoot (41)
        • Vert.x (5)
        • DB SQL (81)
        • SERVER OS (34)
        • React (4)
        • C C++ C# (2)
      • TOOL (65)
        • VCS (29)
        • Eclipse (23)
        • intelliJ (7)
        • VSCODE (6)
      • Programmers (25)
        • java (10)
        • javascript (15)
      • Follow Work (54)
        • SpringbootBoard (54)
  • 블로그 메뉴

    • 방명록
  • hELLO· Designed By정상우.v4.10.0
ReCode.B
[JS] Programmers 최대공약수와 최소공배수 ☑

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.