Coding Test/Baekjoon
[BOJ/백준/C++] 2485번 가로수
예롱메롱
2024. 1. 27. 00:06
728x90
반응형
2485번: 가로수
첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3 ≤ N ≤ 100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가
www.acmicpc.net
📌 접근 방법
- 유클리드 호제법을 사용하여 최대공약수를 구함
✔ 일반 함수
int GCD(int a, int b){
int c = a%b;
while(c!=0){
a=b;
b=c;
c=a%b;
}
return b;
}
✔ 재귀 함수
int Euclidean(int a, int b){
int r=a%b;
if(r==0)return b;
return Euclidean(b, r);
}
✅ Pass Code
#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<iterator>
#include<map>
#include<set>
using namespace std;
int GCD(int a, int b){
int c=a%b;
while(c!=0){
a=b;
b=c;
c=a%b;
}
return b;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
vector<int>v;
cin>>N;
int arr[N];
for(int i=0; i<N; i++){
int x;
cin>>arr[i];
}
sort(arr, arr+N);
for(int i=1; i<N; i++){
v.push_back(arr[i]-arr[i-1]);
}
int tmp=v[0];
for(int i=1; i<v.size(); i++){
tmp=GCD(tmp, v[i]);
}
int cnt=0;
for(int i=0; i<v.size(); i++){
cnt+=v[i]/tmp-1;
}
cout<<cnt<<'\n';
return 0;
}

728x90
반응형