Algorithm/Baekjoon
๋ฐฑ์ค 1654 ๋์ ์๋ฅด๊ธฐ
do-oni
2021. 11. 15. 00:26
๐ปQ
1654๋ฒ: ๋์ ์๋ฅด๊ธฐ
์ฒซ์งธ ์ค์๋ ์ค์์์ด ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๋์ ์ ๊ฐ์ K, ๊ทธ๋ฆฌ๊ณ ํ์ํ ๋์ ์ ๊ฐ์ N์ด ์ ๋ ฅ๋๋ค. K๋ 1์ด์ 10,000์ดํ์ ์ ์์ด๊ณ , N์ 1์ด์ 1,000,000์ดํ์ ์ ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํญ์ K โฆ N ์ด๋ค. ๊ทธ
www.acmicpc.net
๐กA
์ด๋ถ ํ์ ํ์ด
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); int k = Integer.parseInt(st.nextToken()); int n = Integer.parseInt(st.nextToken()); int[] arr = new int[k]; long max = 0; for(int i=0; i<k; i++) { arr[i] = Integer.parseInt(br.readLine()); if(max < arr[i]) max = arr[i]; //์ต๋ ๋์ ๊ธธ์ด ์ ์ฅ } max++; //max +1 ๊ฐ์ด์ด์ผ ํจ 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); //mid ๊ธธ์ด๋ก ์๋์ ๋ ๊ฐ์๊ฐ n๊ฐ ๋ณด๋ค ์์ ๋ ์๋ฅด๋ ๊ธธ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด ์ต๋ ๊ธธ์ด๋ฅผ ์ค์ฌ์ฃผ๊ณ //๋ ๋ง์ ๋๋ ์ต์ ๊ธธ์ด๋ฅผ ๋๋ ค์ค๋ค. if(count < n) max = mid; else min = mid + 1; } System.out.println(min - 1); //-1์ ํด์ค ๊ฐ์ด ์ต๋ ๊ธธ์ด } }โ