[백준] 2110 공유기 설치 in Python

2022. 1. 25. 14:11·Algorithm (PS)
728x90

나의 시간 초과 코드 ㅋㅋㅋㅋ 답은 나오는데....비효율적이라는 거지

# 2110 공유기 설치
from itertools import permutations

n,c = map(int, input().split())
array = []
for i in range(n):
    array.append(int(input()))

result = 0
array.sort() # 탐색을 위해 정렬하기

for case in permutations(array, c):
    temp = n
    for i in range(c-1):
        temp = min(temp, case[i+1]-case[i])
    result = max(temp, result)
print(result)

 

이 문제의 유형은 이진탐색이다 .. 이진탐색 !!! 

즉, '최대 인접 거리' 를 start ~ end 범위 내 에서 이진탐색으로 찾는 것이다. 

그리고 mid 는 현재 확인중인 최대 인접거리가 된다. 

mid 간격 만큼 공유기를 설치 했을 때 c개 이상 설치 할 수 있으면 그 값을 result에 저장한다. 그리고 start를 mid+1로 갱신하여 더 큰 간격이 있는지 확인한다.

mid 간격 만큼 공유기를 설치 했을 때 c개 이상 설치 할 수 없으면, end 의 범위를 mid-1로 갱신하여, 탐색의 범위를 제한한다.

탐색은 while문의 조건 start <= end 일 때까지 반복하며 가장 큰 값을 저장하면 된다.

# 2110 공유기 설치


n,c = map(int, input().split())
array = []
for i in range(n):
    array.append(int(input()))
array.sort()
start = 1 # 최소 간격
end = array[-1] - array[0] # 최대 간격
result = 0

while start <= end:
    mid = (start+end)//2 # 4
    count = 1 # 공유기 개수
    value = array[0]
    for i in range(1, n):
        if array[i] >= value + mid:
            value = array[i]
            count += 1
    if count >= c:
        start = mid+1 # 될 수 있는 더 큰 간격이 있는지 호가인 
        result = mid
    else:
        end = mid - 1

print(result)
728x90

'Algorithm (PS)' 카테고리의 다른 글

[백준] 11404 플로이드 -> 최단 경로 찾기 알고리즘  (0) 2022.01.25
[카카오2020] 가사 검색 in Python  (0) 2022.01.25
[카카오2019] 실패율 in Python  (0) 2022.01.25
[백준] 10825 국영수 in Python + lambda 함수 정리  (0) 2022.01.24
[백준] 16234 인구이동 in Python  (0) 2022.01.23
'Algorithm (PS)' 카테고리의 다른 글
  • [백준] 11404 플로이드 -> 최단 경로 찾기 알고리즘
  • [카카오2020] 가사 검색 in Python
  • [카카오2019] 실패율 in Python
  • [백준] 10825 국영수 in Python + lambda 함수 정리
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • 코딩테스트
  • Swift
  • BFS
  • Kubernetes
  • AWS
  • 파이썬
  • ansible
  • Databricks
  • 데이터엔지니어
  • EC2
  • dp
  • 스파크
  • 알고리즘
  • 빅데이터
  • Leetcode
  • 카카오코딩테스트
  • 프로그래머스
  • 운영체제
  • 백트래킹
  • 데이터엔지니어링
  • 클라우드
  • 쿠버네티스
  • dfs
  • 데이터브릭스
  • linux
  • 백준
  • docker
  • python
  • 리눅스
  • SPARK

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[백준] 2110 공유기 설치 in Python
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.