Rylah's Study & Daily Life

[Programmers Level 1] 최대공약수와 최소공배수 본문

Programmers/Level 1

[Programmers Level 1] 최대공약수와 최소공배수

Rylah 2022. 1. 9. 12:50

https://programmers.co.kr/learn/courses/30/lessons/12940

 

코딩테스트 연습 - 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의

programmers.co.kr

 

  • 최대공약수와 최소공배수
문제 설명

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

제한 사항
  • 두 수는 1이상 1000000이하의 자연수입니다.
입출력 예
n m return
3 12 [3, 12]
2 5 [1, 10]
입출력 예 설명

입출력 예 #1
위의 설명과 같습니다.

입출력 예 #2
자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다.

`

// Programmers Level 1. 최대공약수와 최소공배수
// https://programmers.co.kr/learn/courses/30/lessons/12940

#include <bits/stdc++.h>
using namespace std;

int gcd(int n, int m)
{
	if (m == 0)
		return n;
	else
		return gcd(m, n % m);
}


vector<int> solution(int n, int m) {
	int gcdresult = gcd(n, m);
	
	vector<int> answer;
	answer.emplace_back(gcdresult);
	answer.emplace_back(n * m / gcdresult);
	return answer;
}
int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	vector<int> v;
	int n, m;
	cin >> n >> m;
	v = solution(n, m);
	cout << "[";
	for (int i = 0; i < v.size(); i++)
	{
		cout << v[i];
		if (i + 1 != v.size())
			cout << ",";
	}
	cout << "]";
	return 0;
}
채점을 시작합니다.
정확성 테스트
테스트 1 통과 (0.01ms, 4.33MB)
테스트 2 통과 (0.01ms, 4.27MB)
테스트 3 통과 (0.01ms, 4.31MB)
테스트 4 통과 (0.01ms, 4.32MB)
테스트 5 통과 (0.01ms, 4.32MB)
테스트 6 통과 (0.01ms, 4.32MB)
테스트 7 통과 (0.02ms, 4.27MB)
테스트 8 통과 (0.01ms, 4.32MB)
테스트 9 통과 (0.01ms, 4.32MB)
테스트 10 통과 (0.01ms, 4.26MB)
테스트 11 통과 (0.01ms, 4.32MB)
테스트 12 통과 (0.01ms, 4.33MB)
테스트 13 통과 (0.01ms, 4.27MB)
테스트 14 통과 (0.01ms, 4.37MB)
테스트 15 통과 (0.01ms, 4.27MB)
테스트 16 통과 (0.01ms, 4.31MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0