728x90
첫번째 행의 첫번째 값은 수빈이 위치와 동생들 사이를 넣을 수 있는 int 배열 크기의 값으로, 두번째 값은 수빈이 현재 값을 받는다.
두번째 행들의 동생들 자리값을 수빈이 자리간의 거리를 배열에 담고, 배열에 담긴 값들을 차례대로 유클리드 호제법 알고리즘에 넣어서 위치에 대한 최종 최대공약수(GCD)를 구할 수 있다.
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args){
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 배열 크기 값 받기
int S = Integer.parseInt(st.nextToken()); // 수빈이 자리값 받기
int[] distance = new int[N];
st = new StringTokenizer(br.readLine());
for(int i=0;i<N;i++){
distance[i] = Integer.parseInt(st.nextToken());
distance[i] = Math.abs(S-distance[i]) // 수빈이와 동생 거리 값 받기
}
int GCD = distance[0];
for(int j=1;j<N;j++){
GCD = gcd(GCD,distance[j]); // 유클리드 호제법으로 GCD값 구하기
}
bw.write(String.valueOf(GCD));
bw.flush();
bw.close();
}
public static int gcd(int a, int b){
if(a%b==0)
return a;
else
return gcd(b,a%b);
}
}
'알고리즘 기초1 Java' 카테고리의 다른 글
다이나믹 프로그래밍_1463 번 : 1로 만들기 JAVA (0) | 2024.03.29 |
---|---|
수학1_17087 번 : 골드바흐 파티션 JAVA (2) | 2024.03.22 |
수학1_9613번 : GCD 합 (2) | 2024.03.22 |
수학1_1676 번 : 팩토리얼 0의 개수 JAVA (0) | 2024.03.21 |
수학1_10872 번 : 팩토리얼 JAVA (0) | 2024.03.20 |