◎ 문제
○ 출처
https://programmers.co.kr/learn/courses/30/lessons/12940
○ 문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. |
○ 제한 사항
|
○ 입출력 예
○ 입출력 예 설명
입출력 예 #1 입출력 예 #2 |
○ 작성 예시 코드
public class Solution {
public int[] solution(int n, int m) {
int[] answer = new int[] {};
return answer;
}
}
◎ 나의 문제 풀이
public class Solution
{
public int[] solution(int n, int m)
{
int[] answer = new int[] { };
int gcd, lcm = 0;
int big_num, small_num = 0;
// 나눗셈을 해야하므로 큰수와 작은수 구분
if( n > m )
{
big_num = n;
small_num = m;
}
else
{
big_num = m;
small_num = n;
}
gcd = GCD(big_num, small_num);
lcm = LCM(big_num, small_num, gcd);
answer = new int[] { gcd, lcm };
return answer;
}
// 최대 공약수
int GCD (int num1, int num2)
{
int temp = 0;
while (num2 != 0)
{
temp = num1 % num2;
num1 = num2;
num2 = temp;
}
return num1;
}
// 최소 공배수
int LCM(int num1, int num2, int gcd)
{
if (gcd == 0) return 0;
int result = (num1 * num2) / gcd;
return result;
}
}
◎ 문제 풀이 참고
< 유클리드 호제법 > https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
|
'프로그래밍 문제 풀이 > C#' 카테고리의 다른 글
[프로그래밍 문제 풀이] 프로그래머스 - 직사각형 별찍기 (C#) (0) | 2020.07.20 |
---|---|
[프로그래밍 문제 풀이] 프로그래머스 - 행렬의 덧셈 (C#) (0) | 2020.07.20 |
[프로그래밍 문제 풀이] 프로그래머스 - 콜라츠 추측 (C#) (0) | 2020.07.19 |
[프로그래밍 문제 풀이] 프로그래머스 - 정수 제곱근 판별 (0) | 2020.07.18 |
[프로그래밍 문제 풀이] 프로그래머스 - 이상한 문자 만들기 (C#) (0) | 2020.07.18 |