본문 바로가기

Coding

[C++]백준 2485번: 가로수

728x90
문제

https://www.acmicpc.net/problem/2485

 

2485번: 가로수

첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3 ≤ N ≤ 100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가

www.acmicpc.net

문제 이해

 

 

가로수들이 직선의 도로 한편에 심어져 있고 추가로 가로수를 심어 모든 가로수의 간격이 일정하게 되도록 하려고 한다.

이때 최소한으로 가로수를 심으려고 하는데 그 때의 가로수의 갯수를 출력해야 한다.

문제를 해결하기 위해서는 가로수 사이의 간격들을 구하고 모든 가로수 사이 간격들의 최대 공약수를 구해야 한다.

 

문제 해결

 

코드1(최대 공약수를 구하는 함수)
코드2(나무 사이의 간격들의 최대 공약수를 구하고 이를 통해 가로수 갯수 출력)

 

  1. 가로수들 사이의 간격을 side 벡터에 저장함.
  2. side 벡터의 원소들의 최대공약수를 구함.
  3. side 벡터의 간격들을 구한 최대공약수인 maxT로 나누고 -1 한 값을 count에 저장하여 결과를 출력했습니다.
728x90

'Coding' 카테고리의 다른 글

[C++]백준 1182번: 부분수열의 합  (0) 2023.07.09
[C++]백준 2644번: 촌수계산  (0) 2023.07.08
[C++]백준 10816번: 숫자 카드 2  (0) 2023.07.07
[C++]백준 14891번: 톱니바퀴  (0) 2023.07.06
[C++]백준 2579번: 계단 오르기  (0) 2023.07.05