개미의 개열시미 프로그래밍

[알고리즘] 백준1634 랜선자르기 - 파이썬 본문

알고리즘/이분탐색

[알고리즘] 백준1634 랜선자르기 - 파이썬

YunHyeok 2021. 8. 20. 23:17
728x90
반응형

백준 단계별 풀어보기 '이진 탐색' 세 번째 문제 랜선 자르기를 풀어보았다. 시간초 과부 터해서 오답, 런타임 에러까지 겪고 푼 문제.. 

 

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

 

1654번: 랜선 자르기

첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그

www.acmicpc.net

 

 

[풀이코드]

from sys import stdin

k, n = map(int, stdin.readline().split())
array = [ int(input()) for _ in range(k)]

start = 1 # 0으로 하면 런타임에러..!
end = max(array)


while start <= end:
    mid = (start+end) // 2
    cnt = 0
    for element in array:
        cnt += element // mid

    if cnt >= n:
        start = mid + 1
    else:
        end = mid - 1

print(end)

- 주의할 점은 start를 0으로 했다가 런타임 에러(ZeroDivisionError)가 떴었다. 이 문제는 1로 선언해주면 끝..


이진 탐색 알고리즘을 그대로 활용하면 쉽게 풀 수 있었지만 아직 공부한 지 얼마 안돼서 많이 헷갈렸던 것 같다. 

 

728x90
반응형
Comments