Coding - Algo/Java

[백준] 1300번:k번째 수(Java 자바)

jainn 2022. 3. 8. 15:26
728x90

문제

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

 

1300번: K번째 수

세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B

www.acmicpc.net

 

 

풀이 및 소스코드

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		long n = Long.parseLong(br.readLine());
		long k = Long.parseLong(br.readLine());

		long start = 1;
		long end = k;

		while (start < end) {
			long mid = (start + end) / 2;
			long cnt = 0;

			for (int i = 1; i <= n; i++) {
				cnt += Math.min(mid / i, n);
			}
			if (k <= cnt) {
				end = mid;
			} else {
				start = mid + 1;
			}
		}
		System.out.println(start);
	}
}
반응형