카테고리 없음
[재귀][프로그래머스] 최대공약수, 최소공배수 구하기 - 유클리드호제법
heidiee
2024. 11. 15. 22:56
https://school.programmers.co.kr/learn/courses/30/lessons/12940
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
난 while문으로 풀었는데 재귀가 좀 더 내스타일이라 찾아보았다.
원리가 아래 블로그에 너무 잘 나와있다
#include <string>
#include <vector>
using namespace std;
int gcd2(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd2(b, a%b);
}
}
int gcd(int a, int b) {
int c;
while( b != 0) {
c = a % b;
a = b;
b = c;
}
return a;
}
int lcm(int a, int b) {
return a*b / gcd(a,b);
}
vector<int> solution(int n, int m) {
vector<int> answer;
answer.push_back(gcd(n,m));
answer.push_back(lcm(n,m));
return answer;
}