Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- MSA
- 백준 17779
- spring oauth
- 프로래머스
- java
- 백준 16719
- re.split
- JPA
- MySQL
- 프로그래머스
- 백준 파이썬
- Kotlin
- Spring
- spring security
- spring cloud
- JVM
- 백준 16235
- springboot
- Spring Boot
- 웹어플리케이션 서버
- 백준 19238
- 백준
- 백준 16236
- 백준 17626
- with recursive
- 파이썬
- sql 기술면접
- 백준 15685
- Coroutine
- java 기술면접
Archives
- Today
- Total
시작이 반
[백준] 2110번번 (python 파이썬) 본문
SMALL
문제를 이해를 못했다..
출력에
첫째 줄에 가장 인접한 두 공유기 사이의 최대 거리를 출력한다. 라고 써있는데
인접한 두 공유기 사이 최대 거리가 뭔소린지 몰라서 문제부터 이해했다...
이해한 내용)
공유기 개수 3
좌표 : 1 2 4 8 9
만약
거리 = 2 라면
1에 설치하면 1+2 = 3 -> 다음 설치할 공유기 위치는 3이상인 좌표이다.
2에는 설치 못한다.
4에 설치 4+2 = 6 -> 다음 설치할 공유기 위치는 6이상인 좌표이다.
8에 설치 8+2 = 10 -> 다음에 설치할 공유기 위치는 10이상인 좌표이다.
9에는 설치 못한다.
끝----- 설치한 공유기 개수 3개
거리가 2일때 만족
만약
거리 = 3 라면
1에 설치하면 1+3 = 4 -> 다음 설치할 공유기 위치는 4이상인 좌표이다.
2에는 설치 못한다.
4에 설치 4+3 = 7 -> 다음 설치할 공유기 위치는 7이상인 좌표이다.
8에 설치 8+3 = 11 -> 다음에 설치할 공유기 위치는 11이상인 좌표이다.
9에는 설치 못한다.
끝----- 설치한 공유기 개수 3개
거리가 3일때 만족
이런식이다 즉 만족하는 거리중 최대값을 찾는것이다.
n, c = map(int, input().split(' '))
xs = [int(input()) for _ in range(n)]
xs.sort()
def binary():
left = 1
right = max(xs) - 1
while left <= right:
mid = (left + right) // 2
count = 1
wifi = min(xs) + mid
for i in range(1, len(xs)):
if wifi <= xs[i]:
count += 1
wifi = xs[i] + mid
if count >= c:
left = mid + 1
elif count < c:
right = mid -1
return right
print(binary())
LIST
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 20546번번 (python 파이썬) (0) | 2021.03.24 |
---|---|
[백준] 1753번번 (python 파이썬) (1) | 2021.03.20 |
[백준] 2805번번 (python 파이썬) (0) | 2021.03.17 |
[백준] 10816번번 (python 파이썬) (0) | 2021.03.16 |
[백준] 1920번 (python 파이썬) (0) | 2021.03.16 |