백준

[백준/C++] 17087: 숨바꼭질 6

홍시뗄레 2025. 3. 6. 17:34

이 문제를 이해해보면 최대공약수를 구하는 문제이다. 최대공약수를 구할 수 있는 재귀함수를 선언하고 진행한다. 

#include <iostream>
#include <vector>

using namespace std;

int 최대공약수(int a, int b) { //a가 더 커야 됨
   if (b == 0) {
      return a;
   }
   return 최대공약수(b, a % b);
}

int 숨바꼭질(int s, vector <int> v) {
   int result = v[0];
   for (int i = 1;i < v.size();i++) {
      result = 최대공약수(result,v[i]);
   }
   return result;
}
int main() {
   int n, s;
   cin >> n >> s;
   vector <int> v(n);
   while (n--) {
      int a;
      cin >> a;
      v.push_back(abs(s-a));
   }
   cout << 숨바꼭질(s, v);
   return 0;
}