leecom116

제이의 기술 블로그
  • Print (216)
    • Frontend (29)
      • React (3)
      • HTML, CSS (8)
      • JavaScript (11)
      • JQuery (4)
      • JSP (2)
    • Backend (59)
      • Java (31)
      • Spring (11)
      • Spring Boot (0)
      • Python (1)
      • Node.js (1)
      • C, C++ (12)
      • Linux (2)
    • Database (3)
      • MariaDB (0)
      • Oracle (0)
      • MySQL (0)
    • Project (1)
    • Algorithm (67)
      • 백준 (43)
      • 프로그래머스 (0)
      • 이코테 (6)
      • 코드업 (17)
    • Tool (2)
      • Git (1)
      • Log (1)
    • CS (4)
    • Tech Interview (18)
      • Java (9)
      • Web (9)
    • Study (31)
      • 인프런 (3)
      • 정보처리기사 (8)
      • util (4)
      • 쌍용 (14)

깃허브

    https://github.com/leecom116

«   2025/05   »
일 월 화 수 목 금 토
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 31

최근 글

인기 글

블로그 메뉴

  • 홈
  • 태그
  • 방명록

태그

  • 코드업 기초
  • static메서드
  • CSS
  • 정보공학 방법론
  • 코드업 기초100제
  • 코드업
  • 웹 개발
  • char
  • 메타포어
  • 참조형 변수
  • 나선형 모델
  • C언어 프로젝트
  • Web Developer
  • c언어
  • 객체 배열
  • man month
  • 나도코딩
  • 논리 연산자
  • 델파이 기법
  • 자바 인터페이스
  • Associate
  • 산술 변환
  • 웹 개발 부트캠프
  • 코드업 2차원 배열
  • HTML
  • 의존성 주입
  • 자바의 정석
  • JSP
  • 웹개발
  • 자바 예외 처리

최근 댓글

hELLO · Designed By 정상우.
leecom116
Algorithm/백준

백준 1654 (랜선 자르기)

2023. 12. 26. 20:45
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        /**
         *  K: 랜선 개수
         *  N: 필요한 랜선 개수
         *
         *  N개를 만족하면서 랜선의 최대 길이를 구해야 하는 문제
         *  시간 복잡도를 줄이기 위해 이분 탐색 알고리즘 필요
         */

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] s = br.readLine().split(" ");
        int K = Integer.parseInt(s[0]);
        int N = Integer.parseInt(s[1]);

        int[] arr = new int[K];

        long max = 0;

        for(int i=0; i<arr.length; i++) {
            arr[i] = Integer.parseInt(br.readLine());

            if(max < arr[i]) {
                max = arr[i];
            }
        }

        max++;

        long min = 0;
        long mid = 0;

        while(min < max) {
            mid = (max + min) / 2;

            long count = 0;

            for(int i=0; i<arr.length; i++) {
                count += arr[i] / mid;
            }

            if(count < N) {
                max = mid;
            } else {
                min = mid + 1;
            }
        }
        System.out.println(min - 1);
    }
}
저작자표시

'Algorithm > 백준' 카테고리의 다른 글

백준 11399 (ATM)  (0) 2024.01.01
백준 17219 (비밀번호 찾기)  (0) 2023.12.26
백준 1874 (스택 수열) - Java  (0) 2023.12.02
백준 11723 (집합) - Java  (0) 2023.11.14
백준 1620(나는야 포켓몬 마스터 이다솜)  (0) 2023.11.11
    'Algorithm/백준' 카테고리의 다른 글
    • 백준 11399 (ATM)
    • 백준 17219 (비밀번호 찾기)
    • 백준 1874 (스택 수열) - Java
    • 백준 11723 (집합) - Java
    leecom116
    leecom116

    티스토리툴바