Hayden's Archive

[알고리즘] 백준 - 17087번 : 숨바꼭질 6 본문

Algorithm

[알고리즘] 백준 - 17087번 : 숨바꼭질 6

_hayden 2020. 7. 14. 01:29

알고리즘 문제 출처 : https://www.acmicpc.net/problem/17087

 

17087번: 숨바꼭질 6

수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이�

www.acmicpc.net

 

내가 작성한 코드

수빈이와 동생들과의 거리의 절대값들을 각각 구한 뒤 그 값들의 최대공약수를 구해주면 된다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static long gcd(long a, long b) {
		if(b == 0) {
			return a;
		}else {
			return gcd(b, a%b);
		}
	}

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] ns = br.readLine().split(" ");
		String[] input = br.readLine().split(" ");
		int n = Integer.parseInt(ns[0]);
		long s = Long.parseLong(ns[1]);
		long[] dArr = new long[n];
		for(int i=0; i<n; i++) {
			long difference = s-Long.parseLong(input[i]);
			dArr[i] = Math.abs(difference);
		}
		long gcd = dArr[0];
		if(dArr.length>1) {
			for(int i=1; i<n; i++) {
				gcd = gcd(gcd, dArr[i]);
			}
		}
		System.out.println(gcd);
	}
}