마음만 바쁜 사람
article thumbnail
Published 2022. 5. 2. 14:46
1654-랜선 자르기 ALGORITHM/BOJ

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

 

1654번: 랜선 자르기

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

www.acmicpc.net

마찬가지로 이분 탐색 문제. 이러한 유형들은 뭘 많이 자른다.

 

한가지 주의할 점은 랜선의 길이가 0이 되는 일은 없기 때문에 lo를 0이 아닌 1로 시작해야 한다. 안그러면 런타임 에러(ZeroDivisionError)가 뜨는데 코테에서 이에 해당하는 testcase를 주지 않으면 아무 생각 없이 지나갈 수도 있을것 같다.

주어진 테케 잘 돌아간다고 넘기지 말고 문제 조건 다시 한 번 꼼꼼히 읽어보자

맞왜틀? -> 그냥 내가 틀린거다

K, N = map(int, input().split())
lan = list(int(input()) for _ in range(K)) 

lo = 1
hi = sum(lan) // N
#print(hi)
def is_possible(mid):
    cnt = 0
    for i in lan:
        cnt += (i // mid)
    
    return cnt >= N
ans = 0
while lo <= hi:
    mid = (lo + hi) // 2
    #print(lo, hi, mid)
    if is_possible(mid):
        lo = mid + 1
        ans = mid
    else:
        hi = mid - 1
    mid = (lo + hi) // 2

print(ans)

'ALGORITHM > BOJ' 카테고리의 다른 글

2110-공유기  (0) 2022.05.03
11663-선분 위의 점  (0) 2022.05.03
2805-나무 자르기  (0) 2022.05.02
10815-숫자카드  (0) 2022.04.30
2512-예산  (0) 2022.04.29
profile

마음만 바쁜 사람

@훌루훌루

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!