File tree Expand file tree Collapse file tree 2 files changed +72
-0
lines changed
Expand file tree Collapse file tree 2 files changed +72
-0
lines changed Original file line number Diff line number Diff line change 1+ import sys
2+ input = sys .stdin .readline
3+
4+ #1. 입력 변수 + 오름차순 정렬
5+ N , C = map (int , input ().split ())
6+ arr = sorted ([int (input ()) for _ in range (N )])
7+
8+ #2. “최소 거리 dist”의 탐색 범위 초기화 # 이진 탐색
9+ start = 1 ; end = arr [- 1 ] - arr [0 ]
10+ answer = 0 # 최소 거리 중 최대 거리
11+
12+ #3.최소 인접 거리 dist 최대값 찾기
13+ #설치 공유기는 dist이상의 간격으로 설치
14+ while start <= end :
15+ mid = (start + end )// 2
16+ cnt = 1 # arr[0]은 설치 시작점
17+
18+ #[1] 최소 인접 거리가 mid 이상으로 "최대 설치 가능 공유기 개수계산"
19+ prev = arr [0 ] # 이전에 설치한 공유기 위치
20+ for i in range (1 ,N ) :
21+ if arr [i ] - prev >= mid : # 공유기 등록
22+ prev = arr [i ]
23+ cnt += 1
24+ # 공유기 등록하기엔 dist부족한 경우 -> 다음 arr로 이동
25+
26+ #[2] 최소거리 dist 이분 탐색
27+ # 조건 : 설치한 공유기 개수 Cnt 가 C 이상
28+ # True 경우 , 최소거리 Answer 업데이트, 탐색 범위 (mid+1 : end) 이동
29+ if cnt >= C :
30+ answer = max (answer ,mid )
31+ start = mid + 1
32+ # False 경우: 탐색 범위 Lower bound로 이동(start : mid)
33+ else :
34+ end = mid - 1
35+
36+ print (answer )
Original file line number Diff line number Diff line change 1+ import sys
2+ input = sys .stdin .readline
3+
4+ #1. 입력 변수 + 오름차순 정렬
5+ N , C = map (int , input ().split ())
6+ arr = sorted ([int (input ()) for _ in range (N )])
7+
8+ #2. “최소 거리 dist”의 탐색 범위 초기화 # 이진 탐색
9+ start = 1 ; end = arr [- 1 ] - arr [0 ]
10+ answer = 0 # 최소 거리 중 최대 거리
11+
12+ #3.최소 인접 거리 dist 최대값 찾기
13+ #설치 공유기는 dist이상의 간격으로 설치
14+ while start <= end :
15+ mid = (start + end )// 2
16+ cnt = 1 # arr[0]은 설치 시작점
17+
18+ #[1] 최소 인접 거리가 mid 이상으로 "최대 설치 가능 공유기 개수계산"
19+ prev = arr [0 ] # 이전에 설치한 공유기 위치
20+ for i in range (1 ,N ) :
21+ if arr [i ] - prev >= mid : # 공유기 등록
22+ prev = arr [i ]
23+ cnt += 1
24+ # 공유기 등록하기엔 dist부족한 경우 -> 다음 arr로 이동
25+
26+ #[2] 최소거리 dist 이분 탐색
27+ # 조건 : 설치한 공유기 개수 Cnt 가 C 이상
28+ # True 경우 , 최소거리 Answer 업데이트, 탐색 범위 (mid+1 : end) 이동
29+ if cnt >= C :
30+ answer = max (answer ,mid )
31+ start = mid + 1
32+ # False 경우: 탐색 범위 Lower bound로 이동(start : mid)
33+ else :
34+ end = mid - 1
35+
36+ print (answer )
You can’t perform that action at this time.
0 commit comments