일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스 완전탐색
- 디자인 패턴
- 리액트
- 프로그래밍 언어론
- react firebase
- 코딩테스트 고득점 Kit 완전탐색
- useEffect
- 프로그래머스
- React JS
- 코틀린
- 컴퓨터 네트워크
- design pattern
- NextJS
- 자바 공부
- 백준
- 자바스크립트
- Java
- 코딩테스트 고득점 Kit
- 자바
- react
- 데이터모델링과마이닝
- useState
- codesandbox
- 프로그래머스 자바
- vanillaJS
- JavaScript
- 리액트 훅
- websocket
- 장고
- react hook
Archives
- Today
- Total
기록하는 개발자
[JAVA] 최대공약수와 최소공배수 구하기 (백준 : 2609번) 본문
728x90
- 유클리드 호제법을 사용하여 재귀 혹은 반복문을 사용하여 구현한다.
최대공약수와 최소공배수를 구하는 코드는 자주 나오기 때문에 외워두는 것이 좋다.
1. 재귀
import java.util.Arrays;
class Main {
public int[] gcd_lcm(int n, int m) {
int[] answer = new int[2];
int big = (n > m)? n : m;
int small = (n > m)? m: n;
answer[0] = gcd(big, small);
answer[1] = big * small / answer[0];
return answer;
}
public int gcd(int a, int b) {
if (a % b == 0) return b;
return gcd(b, a % b);
}
public static void main(String[] args) {
Main m=new Main();
System.out.println(Arrays.toString(m.gcd_lcm(15,18)));
}
}
2. 반복문(while)
import java.util.Arrays;
class Main {
public int[] gcd_lcm(int a, int b) {
int[] answer = new int[2];
int gcd=a*b, temp=1;
while(temp!=0){
temp=b%a;
b=a;
a=temp;
}
answer[0]=b;
answer[1]=gcd/b;
return answer;
}
public static void main(String[] args) {
Main m = new Main();
System.out.println(Arrays.toString(m.gcd_lcm(15,18)));
}
}
728x90
'Algorithm' 카테고리의 다른 글
[백준][JAVA] 2750: 수 정렬하기 (0) | 2021.08.09 |
---|---|
[Java] 2차원 배열에 기준을 정해 정렬하기 (백준 : 11650번) (0) | 2021.08.08 |
[백준][JAVA] 11725 : 트리의 부모 찾기 (0) | 2021.07.23 |
[백준][JAVA] 11286 : 절댓값 힙 (0) | 2021.07.23 |
[백준][JAVA] 1991 : 트리 순회 (0) | 2021.07.21 |