using System.Collections.Generic;
using System.Linq;
public class Solution
{
public long[] solution(int n, int m)
{
// 최대공약수 겹치는 약수 중 소수를 곱한 값
// 12 = 1 2 3 4 6 12
// 30 = 1 2 3 5 6 10 15 30
// 12와 30의 최대 공약수는 2 * 3 = 6;
Divisor(n); // 1, 2, 3
Divisor(m); // 1, 2, 3
List<int> num = new List<int>();
long GCDvisor = 1;
for (int i = 0; i < Divisor(n).Count; i++)
{
for (int j = 0; j < Divisor(m).Count; j++)
{
if (Divisor(n)[i] == Divisor(m)[j])
{
num.Add(Divisor(n)[i]);
}
}
}
for (int i = 0; i < num.Count; i++)
{
GCDvisor *= num[i];
}
// 최소공배수 둘의 배수 중 겹치는 값중 가장 작은 값
// 12 = 24 36 48 60 || 2 * 2 * 3
// 30 = 60 || 2 * 3 * 5
// 12와 30의 최소공배수는 60;
Multiple(n); // 2, 2, 3, 1
Multiple(m); // 2, 3, 5
List<int> num2 = new List<int>();
long LCMultiple = 1;
if (Multiple(n).Count >= Multiple(m).Count)
{
for (int i = 0; i < Multiple(n).Count; i++)
{
num2.Add(Multiple(n)[i]);
}
for (int i = 0; i < Multiple(m).Count; i++)
{
if (num2.Contains(Multiple(m)[i]) == false)
{
num2.Add(Multiple(m)[i]);
}
}
}
else
{
for (int i = 0; i < Multiple(m).Count; i++)
{
num2.Add(Multiple(m)[i]);
}
for (int i = 0; i < Multiple(n).Count; i++)
{
if (num2.Contains(Multiple(n)[i]) == false)
{
num2.Add(Multiple(n)[i]);
}
}
}
for (int i = 0; i < num2.Count; i++)
{
LCMultiple *= num2[i];
}
long[] answer = new long[2] { GCDvisor, LCMultiple };
return answer;
}
public List<int> Divisor(int num)
{
List<int> listnum = new List<int>();
List<int> listDiv = new List<int>();
for (int i = 1; i <= num; i++)
{
if (num % i == 0)
{
listnum.Add(i);
}
}
for (int k = 0; k < listnum.Count; k++)
{
if (listnum[k] / 1 == 1)
{
listDiv.Add(listnum[k]);
}
else if (listnum[k] / 2 == 1)
{
listDiv.Add(listnum[k]);
}
}
return listDiv;
}
public List<int> Multiple(int num)
{
List<int> multiple = new List<int>();
while (true)
{
if (num % 2 == 0)
{
num = num / 2;
multiple.Add(2);
}
else if (num % 3 == 0)
{
num = num / 3;
multiple.Add(3);
}
else
{
multiple.Add(num);
break;
}
}
return multiple;
}
}
테스트 1 〉 통과 (1.70ms, 31.2MB)
테스트 2 〉 통과 (1.69ms, 31.1MB)
테스트 3 〉 실패 (1.71ms, 31.2MB)
테스트 4 〉 통과 (1.69ms, 31.2MB)
테스트 5 〉 통과 (1.82ms, 31.2MB)
테스트 6 〉 통과 (1.68ms, 31.1MB)
테스트 7 〉 통과 (1.74ms, 30.7MB)
테스트 8 〉 통과 (1.80ms, 31.2MB)
테스트 9 〉 실패 (1.74ms, 31MB)
테스트 10 〉 통과 (1.73ms, 31.2MB)
테스트 11 〉 실패 (1.79ms, 30.8MB)
테스트 12 〉 실패 (1.84ms, 30.9MB)
테스트 13 〉 실패 (1.94ms, 31.4MB)
테스트 14 〉 실패 (1.98ms, 31MB)
테스트 15 〉 실패 (1.82ms, 31.3MB)
테스트 16 〉 실패 (1.88ms, 31.2MB)
...진짜 어떻게든 쥐어 짜내서 코드 실행까진 통과가 되었는데 테스트에서 박살이 나고야 말았다. 테스트 케이스 값이라도 알려주면 수정을 시도라도 해볼텐데 보안 상의 이유로 어렵단다. 이게 무슨; 내일 튜터님께 달려갈 예정