

내 풀이 1 : ???? ???? ???????
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// A,B의 최소공배수를 구하는 문제
// A와 B를 받아온다.
// List를 두 개 받아와서 A, B의 약수를 추가한다.
// 공통된 약수를 모두 빼준다. 그 후 남은 수와 공통으로 뺀 약수를 곱해준다.
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
long A = sc.nextLong();
long B = sc.nextLong();
List<Long> Alist = new ArrayList<>();
List<Long> Blist = new ArrayList<>();
long answer = 1;
for (long i = 1; i <= Math.max(A, B); i++) {
if (A % i == 0 && B % i == 0){
answer *= i;
}else if(A % i == 0){
Alist.add(i);
answer *= i;
}else if(B % i == 0){
Blist.add(i);
answer *= i;
}
}
sb.append(answer);
System.out.println(sb.toString());
}
}
내 풀이 : 28%에서 틀렸습니다.
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// A,B의 최소공배수를 구하는 문제
// A와 B를 받아온다.
// A,B 중 더 큰 수로 for문을 돌린다.
// 공통으로 나뉘어지면 answer에 곱해서 중첩해주고 A,B를 각각 나눠준다.
// 마지막에 다 곱해준다.
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
long A = sc.nextLong();
long B = sc.nextLong();
long answer = 1;
long MathMaxAB = Math.max(A,B);
for (long i = 1; i <= MathMaxAB; i++) {
if (A % i == 0 && B % i == 0){
answer *= i;
A /= i;
B /= i;
}
}
answer *= A * B;
sb.append(answer);
System.out.println(sb.toString());
}
}
내 풀이 : 범위 똑바로 잡음 - 정답
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// A,B의 최소공배수를 구하는 문제
// A와 B를 받아온다.
// A,B 중 더 큰 수로 for문을 돌린다.
// 공통으로 나뉘어지면 answer에 곱해서 중첩해주고 A,B를 각각 나눠준다.
// 마지막에 다 곱해준다.
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
long A = sc.nextLong();
long B = sc.nextLong();
long answer = 1;
long MathMaxAB = Math.max(A,B);
for (long i = MathMaxAB; i >= 1; i--) {
if (A % i == 0 && B % i == 0){
answer *= i;
A /= i;
B /= i;
}
}
answer *= A * B;
sb.append(answer);
System.out.println(sb.toString());
}
}
느낀점
하 진짜.. 개힘들다..
유클리제호제법이 뭔데...