티스토리 뷰

문제 링크입니다 : https://www.acmicpc.net/problem/1654

 

1654번: 랜선 자르기

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

www.acmicpc.net

 

이분 탐색 문제!

 

 

 

 

 

#include <iostream>
#include <vector>

using namespace std;
typedef long long ll;

int K, N;
vector<ll> cable;

int main() {
    cin >> K >> N;
    cable.resize(K);

    ll low = 0, high = 0;
    for(int i = 0; i < K; i++) {
        cin >> cable[i];
        if(cable[i] > high) {
            high = cable[i];
        }
    }

    ll mid, result = 1;

    while(low <= high) {
        mid = (low + high) / 2;

        if(mid == 0) {
            break;
        }
        ll cableNum = 0;
        for(int i = 0; i < K; i++) {
            cableNum += cable[i] / mid;
        }

        if(cableNum >= N) {
            low = mid + 1;
            result = mid;
        } else {
            high = mid - 1;
        }
    }

    cout << result;

    return 0;
}

 

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

 

'알고리즘 > 백준(BOJ)' 카테고리의 다른 글

백준 - 15732 도토리 숨기기  (0) 2020.08.19
백준 - 16434 드래곤 앤 던전  (0) 2020.08.19
백준 - 6236 용돈 관리  (0) 2020.08.18
백준 - 2343 기타 레슨  (0) 2020.08.18
백준 - 2512 예산  (0) 2020.08.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함