<풀이>
a=5, b=10이면
최대공약수는 둘중 작은수 a=5보다 작거나 같다
최소공배수눈 둘중 큰수 b=10보다 크거나 같다
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
String[] arr = br.readLine().split(" ");
HashSet<Integer> hashSet = new HashSet<>();
int a = Integer.parseInt(arr[0]);
int b = Integer.parseInt(arr[1]);
int min = Math.min(a,b); //최대공약수는 둘중에 작은값보다 작거나 같다.
int max = Math.max(a,b); //최소공배수는 둘중에 큰값보다 크거나 같다.
int gcd = 0; //최대공약수
int lcm = 0; //최소공배수
//최대공약수
for (int j = min; j>0 ; j--) { //초기값을 작은값으로 설정으로 하나씩 줄여감
if(a%j==0 && b%j==0){ //두값모두 나눠지는 수가 최대 공약수
gcd = j;
break;
}
}
//최소공배수
for (int j = max; j <= a*b; j++) { //초기값을 큰값으로 설정하고 두값의 곱셈보다 작거나 같다
if(j%a==0 && j%b==0){ //j값을 a,b 둘다 나눠지는 값이 최소공배수
lcm = j;
break;
}
}
bw.write(lcm + " " + gcd + "\n");
}
bw.close();
}
}
최대공약수와 최소공배수의 특성을 알고 초기값을 잡으니까 쉽게 풀 수 있었다...
그것도 모르고 for문 돌려서 풀때는 오류나고 갈피도 못잡아서 머리아프게 고생했다
'Algorithm > Java' 카테고리의 다른 글
[알고리즘_Java] 백준 10974번 모든 순열 (재귀) (0) | 2022.03.12 |
---|---|
[알고리즘_Java] 백준 9094번 수학적 호기심 (0) | 2022.03.02 |
[알고리즘_Java] 백준 5555번 반지 (substring) (0) | 2022.02.25 |
[알고리즘_Java] 백준 17173번 배수들의 합 (HashSet) (0) | 2022.02.19 |
[알고리즘_Java] 백준 10872번 팩토리얼 (재귀, 메모이제이션) (0) | 2022.02.04 |