백준 C++ 1654 랜선 자르기

jaranda·2021년 12월 20일
0
post-thumbnail

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 변수의 초기화 위치였다.

profile
자라는 개발자

0개의 댓글