[BOJ] 1654 랜선 자르기

Algorithm 2023. 1. 25. 13:37
반응형

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

 

1654번: 랜선 자르기

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

www.acmicpc.net

 

long 

https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/integral-numeric-types

 

정수 숫자 형식 - C# 참조

각 정수 숫자 형식에 대한 범위, 스토리지 크기 및 용도에 대해 알아봅니다.

learn.microsoft.com

 

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
 
namespace _2461
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader(Console.OpenStandardInput());
            StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());

            int[] kn = Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
            int k = kn[0];  //이미 가지고 있는 랜선의 개수 
            int n = kn[1];  //필요한 랜선의 개수 
            int[] arr = new int[k];
            long max = 0;
            for (int i = 0; i < k; i++)
            {
                arr[i] = int.Parse(sr.ReadLine());
            }

            max = arr.Max();
            //sw.WriteLine("max: {0}", max);
            
            long min = 1;
            long mid = 0;
            long ans = 0;
            
            while (min <= max)
            {
                //범위내 중간 길이를 구한다 
                mid = (min + max) / 2;
                
                long cnt = 0;
                
                //구해진 중간 길이로 잘라서 총 몇개가 만들어지는지 구한다 
                for (int i = 0; i < k; i++)
                {
                    cnt += arr[i] / mid;
                }

                //sw.WriteLine("cnt: {0}, n: {1}", cnt, n);
                //sw.WriteLine("min: {0}, mid: {1}, max: {2}", min, mid, max);
                
                if (cnt < n)
                    max = mid - 1;
                else
                {
                    if (ans < mid)
                        ans = mid;

                    min = mid + 1;
                }
            }

            sw.WriteLine(ans);
            
            sr.Close();
            sw.Close();

        }
    }

}
반응형

'Algorithm' 카테고리의 다른 글

[BOJ/C#] 10250 ACM 호텔  (0) 2023.01.26
[BOJ] 10989 수 정렬하기 3  (0) 2023.01.26
[BOJ] 1920 수 찾기  (0) 2023.01.25
[BOJ] 1343 폴리오미노  (0) 2023.01.24
C#으로 구현한 우선순위 큐 Priority Queue  (0) 2023.01.24
: