자라는 개발자/문제풀이

백준 C++ 1654번 랜선 자르기

자란다 2021. 12. 21. 00:19
728x90
반응형

1654번 랜선 자르기


문제풀이

#include <iostream>
#include <string.h>
using namespace std;
void fast_io(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}

int k, n, res = 0;
int max_arr_value = 0;

long long low = 1, high, mid;

int main(void)
{
    fast_io();

    cin >> k >> n;
    int arr[k + 1];
    for (int i = 0; i < k; i++)
    {
        cin >> arr[i];
        if (max_arr_value < arr[i])
            max_arr_value = arr[i];
    }

    high = max_arr_value;

    while (low <= high)
    {

        mid = (low + high) / 2;
        int ckn = 0;
        for (int i = 0; i < k; i++)
        {
            ckn += arr[i] / mid;
        }
        if (ckn >= n)
        {
            low = mid + 1;
            if (res < mid)
                res = mid;
        }
        else
        {
            high = mid - 1;
        }
    }
    cout << res;
}

식을 다 만든거 같은데 결과값이 틀려서 애먹었다.
원인은 ckn 변수의 초기화 위치였다.

728x90
반응형

'자라는 개발자 > 문제풀이' 카테고리의 다른 글

백준 C/C++ 11050번 이항 계수 1  (0) 2021.12.23
백준 C++ 11651번 좌표정렬하기 2  (0) 2021.12.22
백준 C++ 10866번 덱  (1) 2021.12.19
백준 C/C++ 10250번 ACM 호텔  (0) 2021.12.18
백준 C++ 10828번 스택  (1) 2021.12.17