https://www.acmicpc.net/problem/17087
1. 풀이
수빈이와 동생의 거리들의 최대공약수를 구하는 문제.
수빈이는 이동을 X+D, X-D로만 가능하고, 하나의 D로 모든 동생을 찾아야 한다.
이 문제는 수빈이와 모든 동생들의 거리를 구한 다음, 거리들의 최대 공약수(GCD)를 구하면 된다.
N개의 최대공약수는 어렵게 느껴지지만, 사실 첫번째 부터 N개까지 순서대로 최대공약수를 구하면 구해진다.
2. 코드
import java.util.*;
public class Main {
public static int GCD(int a, int b){
if(b == 0)
return a;
return GCD(b, a%b);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int S = sc.nextInt();
int[] nums = new int[N];
for(int i = 0; i < N; i++) {
// int distance = Math.abs(S-sc.nextInt());
int distance = S - sc.nextInt();
if(distance < 0)
distance*=-1;
nums[i] = distance;
}
int result = nums[0];
for(int i = 1; i < N; i++){
result = GCD(result, nums[i]);
}
System.out.println(result);
sc.close();
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준 11727] 2xn 타일링 2 - 자바 (0) | 2020.05.01 |
---|---|
[백준 17103] 골드바흐 파티션 - 자바 (0) | 2020.05.01 |
[백준 9613] GCD 합 - 자바 (0) | 2020.04.30 |
[백준 1676] 팩토리얼 0의 개수 - 자바 (0) | 2020.04.30 |
[백준 6588] 골드바흐의 추측 (0) | 2020.04.28 |
댓글