반응형
링크
https://school.programmers.co.kr/learn/courses/30/lessons/12940
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명 및 제한 조건
나의 코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n, int m)
{
vector<int> answer;
int nTemp = n;
int mTemp = m;
int max = 1; //최대공약수
int min = 1; //최소공배수
int temp = 0;
while (m != 0) //유클리드 호제법
{
temp = n % m;
n = m;
m = temp;
max = n;
}
answer.push_back(max);
n = nTemp;
m = mTemp;
min = (n * m) / max; //최소공배수는 최대공약수를 사용
answer.push_back(min);
return answer;
}
채점 결과
다수 코드
재귀함수 이용
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
#include<vector>
#include<iostream>
using namespace std;
int Euclidean(int a, int b)
{
return b ? Euclidean(b, a%b) : a;
}
vector<int> gcdlcm(int a,int b)
{
vector<int> answer;
// 유클리드 호제법
answer.push_back(Euclidean(a,b));
answer.push_back(a*b / answer[0]);
return answer;
}
int main()
{
int a=3, b=12;
vector<int> testAnswer = gcdlcm(a,b);
cout<<testAnswer[0]<<" "<<testAnswer[1];
}
신기한 코드
// 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
// 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
#include<vector>
#include<iostream>
using namespace std;
vector<int> gcdlcm(int a,int b)
{
int temp = a;
if(a > b){
a = b;
b = temp;
}
vector<int> answer;
for(int i = a; i > 0; i--){
if(((a%i) == 0) && ((b%i) == 0)){
answer.push_back(i);
answer.push_back((a*b)/i);
break;
}
}
return answer;
}
int main()
{
int a=3, b=12;
vector<int> testAnswer = gcdlcm(a,b);
cout<<testAnswer[0]<<" "<<testAnswer[1];
}
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 이상한 문자 만들기 (0) | 2022.10.22 |
---|---|
[프로그래머스 C++] 직사각형 별찍기 (0) | 2022.10.18 |
[프로그래머스 C++] 서울에서 김서방 찾기 (0) | 2022.10.17 |
[프로그래머스 C++] 약수의 개수와 덧셈 (0) | 2022.10.17 |
[프로그래머스 C++] 같은 숫자는 싫어 (0) | 2022.10.13 |