반응형
문제 링크 : https://www.acmicpc.net/problem/2485
2485번: 가로수
첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3≤N≤100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가로수
www.acmicpc.net
> 풀이
규칙을 찾아 해결하는 간단한 구현문제 입니다.
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int n, arr[100000];
vector<int> v;
int gcd(int a, int b) {
while (b != 0) {
int c = a % b;
a = b;
b = c;
}
return a;
}
int main() {
int _gcd, cnt = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &arr[i]);
sort(arr, arr + n);
for (int i = 0; i < n - 1; i++)
v.push_back(arr[i + 1] - arr[i]);
_gcd = gcd(v[0], v[1]);
for (int i = 2; i < n; i++)
_gcd = gcd(_gcd, v[i]);
for (int i =0; i < n - 1; i ++)
cnt += v[i] / _gcd - 1;
printf("%d", cnt);
}
(개발 환경 : vs code)
반응형
'알고리즘 (백준) > BOJ 길라잡이 (1)' 카테고리의 다른 글
백준 6588 (골드바흐의 추측) / C++ (0) | 2020.07.20 |
---|---|
백준 1644 (소수의 연속합) / C++ (0) | 2020.07.20 |
백준 2580 (스도쿠) / C++ (0) | 2020.07.16 |
백준 2661 (좋은 수열) / C++ (0) | 2020.07.16 |
백준 15686 (치킨 배달) / C++ (0) | 2020.07.13 |