728x90
파이썬
실3 랜선 자르기
맞은 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | def calcLan(divisor): sum = 0 for i in lan: sum += i // divisor return sum def biSearch(start, end): if start >= end: print(start-1) return mid = (start+end)//2 if calcLan(mid) < N: biSearch(start, mid) else: biSearch(mid+1, end) K, N = map(int, input().split()) lan = [] for _ in range(K): lan.append(int(input())) biSearch(0, max(lan)+1) | cs |
start와 end가 0, 1일 때 mid가 0이 되어버리는 문제가 있는데 end에 1을 더해줘서 이를 해결하였고 대신 start를 출력할 때 1을 빼준다.
생각보다 이분탐색이 쉽지 않음을 느꼈다.
5번 시도해서 겨우 성공했다.
728x90
'Python' 카테고리의 다른 글
| 211110 백준 코딩연습 파이썬 10250 ACM 호텔, 4153 직각삼각형 (0) | 2021.11.10 |
|---|---|
| 211109 백준 코딩연습 파이썬 2231 분해합, 2292 벌집 (0) | 2021.11.09 |
| 211105 백준 코딩연습 파이썬 10816 숫자 카드 2 (0) | 2021.11.05 |
| 211104 백준 코딩연습 파이썬 1920 수 찾기 (코테 스터디 시작 211102 ~) (0) | 2021.11.04 |
| 210923 백준 코딩연습 파이썬 1018 체스판 다시 칠하기, 1085 직사각형에서 탈출, 1181 단어 정렬, 1259 팰린드롬수, 1436 영화감독 숌 (0) | 2021.11.04 |




최근댓글