반응형

문제 링크 : 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)

반응형

+ Recent posts