오랫만에 풀어보는 코딩테스트 문제이다. 요새 학교 공부랑 날이 좋아서 내 공부를 따로 많이 못했다(핑계;).
static int gcd(int a, int b) {
while(b!=0) {
int r=a%b;
a=b;
b=r;
}
return a;
}
이와 같이 두수가 있으면 처음에 그 중 한 수(여기서는 b)로 나누고 나머지를 임시 변수(r)에 저장하고 나누어진수(a)는 나눈수(b)가 되고 나눈수(b)는 임시변수(r)이 된다. 그리고 b가 0이 아닐때 까지 반복하다 0이 되면 a를 return 하게 되는데 a가 a,b의 최대공약수가 된다.
public static int solution(int[] arr) {
int answer = 0;
for(int i=0;i<arr.length;i++) {
for(int j=i+1;j<arr.length;j++) {
answer =lcm(arr[i],arr[j]);
}
}
return answer;
}
public static void main(String[] args) {
int[] arr = {8,2,14,6};
System.out.print(solution(arr));
}
static int gcd(int a, int b) {
while(b!=0) {
int r=a%b;
a=b;
b=r;
}
return a;
}
static int lcm(int a,int b) {
return a*b/gcd(a,b);
}
public static int solution(int[] arr) {
int answer = 0;
int lcm1 = arr[0];
for(int i=0;i<arr.length;i++) {
lcm1 =lcm(lcm1,arr[i]);
}
return lcm1;
}