[백준] 2485 - 가로수 (S4)

2023. 7. 4. 15:59·알고리즘 (PS)/BOJ
반응형

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

 

2485번: 가로수

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

www.acmicpc.net

모든 가로수의 간격이 같도록 새로 심어야 하는 가로수의 최소 개수를 구하는 문제이다.

(최대 개수로 심으려면 그냥 간격을 1씩 해서 심으면 되니 간단하다)

 

바꿔말하면 주어진 수열이 등차수열이 되도록 하는 공차의 최댓값을 구하는 문제로 볼 수 있다.

등차수열의 일반항 An = a + (n-1)d 으로 생각을 해보면

구하는게 공차의 최댓값이니 공차를 구하는데 방해가 되는 초항 a 를 없애준다.

 

이 문제에 적용하면 주어진 수를 정렬한뒤, 가장 크기가 작은 원소의 값만큼 모든 원소의 값을 빼준다.

그러면 초항이 0인 수열의 등차를 구하는 구하는 문제가 된다.

 

이 과정을 거치고 나면 이 수열을 구성하는 원소는 모두 등차의 배수가 된다.

바꿔말하면 이 등차는 수열을 구성하는 모든 원소의 약수이다.

 

가로수를 최소한으로 심으려면 간격이 커야만 한다.

따라서 이 등차의 값이 최대가 되어야 하므로, 이 수열 원소들의 최대공약수를 구하면 된다.

 

문제의 답을 도출하기 위해서는

주어진 수 중 가장 큰수를 마지막 원소로 하는 등차수열을 구성한다고 생각하면 된다.

구성할 등차수열의 원소 개수 - 이미 주어진 원소 개수를 구하면 문제의 답이 나온다.

 

import sys
input = sys.stdin.readline

def GCD(a, b):
    if b == 0: return a
    return GCD(b, a%b)

n = int(input())
l = [int(input()) for _ in range(n)]
l.sort()
l = list(map(lambda x: x-l[0], l))
g = l[1]
for i in range(2, n):
    g = GCD(g, l[i])
print(l[-1]//g - len(l) + 1)

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 (PS) > BOJ' 카테고리의 다른 글

[백준] 3015 - 오아시스 재결합 (P5)  (0) 2023.07.04
[백준] 17299 - 오등큰수 (G3)  (0) 2023.07.04
[백준] 1796 - 신기한 키보드 (G4)  (0) 2022.08.27
[백준] 2098 - 외판원 순회 (G1)  (0) 2022.08.21
[백준] 12850 - 본대 산책 2 (G1)  (2) 2022.05.14
'알고리즘 (PS)/BOJ' 카테고리의 다른 글
  • [백준] 3015 - 오아시스 재결합 (P5)
  • [백준] 17299 - 오등큰수 (G3)
  • [백준] 1796 - 신기한 키보드 (G4)
  • [백준] 2098 - 외판원 순회 (G1)
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (614)
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (44)
        • 생각 정리 (22)
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8)
        • express.js (1)
        • Spring & Spring Boot (7)
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[백준] 2485 - 가로수 (S4)
상단으로

티스토리툴바