백준/실버
[백준 17087번] 숨바꼭질 6 (C++)
게임개발기원
2025. 4. 13. 22:40
문제링크 : https://www.acmicpc.net/problem/17087
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int N, S;
int arr[100001];
int main()
{
cin >> N >> S;
vector<int>v;
for(int i=0; i<N; i++)
{
cin >> arr[i];
v.push_back(abs(arr[i]-S));
}
int tmp = abs(arr[0]-S);
for(auto i : v)
{
tmp = gcd(tmp, i);
}
cout << tmp;
return 0;
}
최대공약수를 활용한 문제이다.
입력받은 수빈이의 위치 S와 동생 간의 거리 차이 값을 모두 구하여 따로 저장하고,
이 값들의 최대공약수를 구하면 D의 최대값이 된다.