[백준 JAVA] 17087번 풀이 - 숨바꼭질 6
by mini_minpackage quiz;
import java.util.Scanner;
/**
* 숨바꼭질 6
* 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다.
*
* 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이동할 수 있다. 수빈이의 위치가 동생이 있는 위치와 같으면, 동생을 찾았다고 한다.
*
* 모든 동생을 찾기위해 D의 값을 정하려고 한다. 가능한 D의 최댓값을 구해보자.
*
*/
public class _17087 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int s = sc.nextInt();
int [] arr = new int[n];
for(int i=0; i<n; i++){
arr[i] = Math.abs(s-sc.nextInt());
}
int result = 0;
for(int i=0; i<arr.length; i++){
if(i==0) result = gcd(0, arr[i]);
else {
result = gcd(result, arr[i]);
}
}
System.out.println(result);
sc.close();
}
public static int gcd(int a, int b){
while(b!=0){
int r = a % b;
a = b;
b = r;
}
return a;
}
}
풀이
유클리드호제법(GCD) - 최대공약수를 구하는 풀이법을 이용했다.
배열에 최대공약수를 계산할 값 들을 저장하고, 배열의 처음부터 순서대로 최대공약수를 구했다.
두 수의 최대공약수와 다음 배열 값의 최대공약수를 구해가면서, 모든 값이 충족하는 최대공약수를 출력한다.
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 11727번 풀이 - 2xn 타일링 2 (0) | 2023.11.18 |
---|---|
[백준 JAVA] 11726번 풀이 - 2xn 타일링 (0) | 2023.11.17 |
[백준 JAVA] 1676번 풀이 - 팩토리얼 0의 개수 (1) | 2023.11.14 |
[백준 JAVA] 6588번 풀이 - 골드바흐의 추측 (1) | 2023.11.13 |
[백준 JAVA] 문자열 자료구조 문제 (11655, 10820, 10808번) (0) | 2023.11.10 |
블로그의 정보
개발자 미니민의 개발로그
mini_min