728x90
[백준] 300 - 수학 1 : 숨바꼭질 6 (17087번 JAVA)
[정수형 변수 범위]
동생 혹은 수빈이의 위치 값 (최대) : 1,000,000,000 (십억)
int 자료형으로 커버 가능
(int 자료형 : 약 -21억 ~ 약 21억)
[접근 과정]
수빈이와 동생 각각 사이의 거리를 구한다. (Math.adp() : 절댓값 함수)
거리들의 최대 공약수를 구한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
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));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int S = Integer.parseInt(st.nextToken());
// 동생과 수빈이 사이의 거리
int[] arr = new int[N];
st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++){
int x = Integer.parseInt(st.nextToken());
arr[i] = Math.abs(x - S);
}
// 갱신 방법으로 최대공약수 구하기
int result = arr[0];
for(int i=1; i<N; i++){
result = gcd(arr[i], result);
}
bw.write( result + "\n");
bw.flush();
bw.close();
}
public static int gcd (int a, int b){
while(b != 0){
int r = a % b;
a = b;
b = r;
}
return a;
}
}
728x90
'백준 > 코드 플러스 (알고리즘 기초 - 1)' 카테고리의 다른 글
[백준] 쉬운 계단 수 (!) (10844번 JAVA) / 400 - 다이나믹 프로그래밍 1 (0) | 2023.01.15 |
---|---|
[백준] 303 - 수학 1 (참고) : Base Conversion (11576번 JAVA) (0) | 2023.01.11 |
[백준] 300 - 수학 1 : 조합 0의 개수 (!) (2004번 JAVA) (0) | 2023.01.08 |
[백준] 300 - 수학 1 : 팩토리얼 0의 개수 (1676번 JAVA) (0) | 2023.01.07 |
[백준] 300 - 수학 1 : 골드바흐의 추측 (6588번 JAVA) (0) | 2023.01.07 |