[Python] 2110. 공유기 설치

2023. 4. 27. 09:42·study/백준(BOJ)
728x90

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

 

2110번: 공유기 설치

첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가

www.acmicpc.net

 

접근법

  • mid(공유기간 거리)값을 늘리면서 mid로 했을 때의 공유기의 개수가 count(설치 가능한 공유기 수)와 비교함
    • count가 더 크다면 공유기를 더 설치 할 수 있으므로 mid를 줄임
    • count가 더 작다면 공유기 개수를 줄여야 하므로 mid를 키움
def init_func(N):
    arr = []
    for i in range(N):
        arr.append(int(input()))
    arr.sort()
    return arr

def solution(arr, c):
    start = 1
    end = arr[-1] - arr[0]
    ans = 0
    while start <= end:
        mid = (end + start) // 2
        cur = arr[0] # 첫 집집에 공유기 두기
        count = 1

        # 현재 mid값의 거리로 공유기 뒀을 때의 공유기 개수
        for i in range(1, len(arr)):
            if arr[i] >= cur + mid:
                count += 1
                cur = arr[i]

        # 공유기 개수 확인
        if count >= c:
            ans = mid
            start = mid + 1
        else:
            end = mid - 1
    print(ans)

def main():
    N, C = map(int, input().split())
    arr = init_func(N)
    solution(arr, C)

if __name__=="__main__":
    main()

 

사용된 알고리즘

이분탐색, 매개 변수 탐색

728x90

'study > 백준(BOJ)' 카테고리의 다른 글

[Python] 17626. Four Squares  (0) 2023.05.12
[Python] 16234. 인구 이동  (0) 2023.04.29
[Python] 7795. 먹을 것인가 먹힐 것인가  (0) 2023.04.27
[Python] 27211. 도넛 행성  (0) 2023.04.25
[Python] 23351. 물 주기  (0) 2023.04.25
'study/백준(BOJ)' 카테고리의 다른 글
  • [Python] 17626. Four Squares
  • [Python] 16234. 인구 이동
  • [Python] 7795. 먹을 것인가 먹힐 것인가
  • [Python] 27211. 도넛 행성
bbooo
bbooo
  • bbooo
    bbooo
    bbooo
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • study (61)
        • 백준(BOJ) (34)
        • Programmers (15)
        • LeetCode (9)
      • AI (4)
        • Paper (0)
      • SSAC X IFFEL (4)
        • DeepML (1)
        • 밑바닥 부터 시작하는 딥러닝 (2)
      • 회고 (46)
      • Error (10)
      • Setting (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬 석유시추
    백준 2470
    set
    항해99
    python 과제 진행하기
    python 석유시추
    백트래킹
    99클럽
    Til
    typeerror: sequence item 0: expected str instance int found
    LeetCode
    programmers 과제 진행하기
    sort
    sequence item 0: expected str instance int found
    파이썬 과제 진행하기
    programmers 석유시추
    문자열을 원하는 길이로
    두 포인터
    풀이 실패
    vscode
    그리디 알고리즘
    docker
    투포인터
    프로그래머스 석유시추
    코딩테스트 준비
    파이썬
    브루트포스
    개발자 취업
    백준
    Counter
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
bbooo
[Python] 2110. 공유기 설치
상단으로

티스토리툴바