Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
Archives
- Today
- Total
luke
[백준] - 최대공약수와 최소공배수 (2609) (자바/Java) 본문
https://www.acmicpc.net/problem/2609
문제.
풀이.
이번 문제는 처음에 제출했는데 틀렸던 코드를 보여주겠다...(너무 단순 + 멍충,,,)
<오답>
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int rs = num1 % num2;
int rs2 = (num1 * num2) / rs;
System.out.println(rs);
System.out.println(rs2);
}
}
조금 창피하지만 이렇게라도 공개처형 당해야 더 생각하고 더 열심히 할 것이다...😭
<정답>
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int gcd = getGCD(num1, num2);
System.out.println(gcd);
System.out.println((num1 * num2) /gcd);
}
public static int getGCD(int num1, int num2) {
if (num1 % num2 == 0) {
return num2;
}
return getGCD(num2, num1 % num2);
}
}
찾아보면서 문제를 풀다 이번에 접하게된 것은 ' 최대공약수 GCD ' 이다.
최대공약수 GCD
GCD는 가장 큰 공통된 약수라는 뜻이다.
" a와 b 두 수가 주어지면 a의 약수들을 모두 구하고, b의 약수들을 모두 구한 뒤 공통 된 약수들만 찾아내어 약수들의 곱으로 다시 나타내준다. "
하지만 단점이 있다. 약수가 많을 경우 그것을 인수분해 하는데 시간을 많이 필요로 하게 되며 또한 두 수를 비교한 뒤 다시 곱해주는 것도 너무 많은 시간을 소비하게 된다. 그래서 최대공약수 또는 최소공배수를 사용하기 위해 보통은 앞서 보여준 알고리즘 방식을 사용하게 된다. 그게 바로 '유클리드 호제법'이다.
유클리드 호제법
2개 수의 최대공약수를 구하는 알고리즘이다.
자연수 a, b에 대해서 a를 b로 나눈 나머지를 c라 한다면 a,b의 최대공약수와 b,c의 최대공약수는 같다.
이 성질에 따라 a를b로 나눈 나머지 c를 구하고, b를 c로 나눈 나머지 c를 구한다.
나머지가 0이 될 때 나눈 수가 a, b의 최대공약수가 된다.
최소 공배수 : (a X b) / (최대공약수)
더보기
ex) 24, 18의 최대공약수 : 24 % 18 = 6 18 % 6 = 0 //최대 공약수 = 6
//최소 공배수 : (24 X 18) / 6 = 72
이런 식으로 풀게 되면 위 코드로 정답이다!!!
'알고리즘문제 > 백준 문제(Java)' 카테고리의 다른 글
[백준] - 문자열 반복 (2675) (자바/Java) (3) | 2024.02.29 |
---|---|
[백준] - 알람 시계 (2284) (자바/Java) (0) | 2024.02.27 |
[백준] - 약수 (1037) (자바/Java) (0) | 2024.02.19 |
[백준] - 단어 공부 (1157) (자바/Java) (0) | 2024.02.18 |
[백준] - 더하기3 (1102) (자바/Java) (0) | 2024.02.15 |