728x90
백준 1300 K번째 수
문제
세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자.
배열 A와 B의 인덱스는 1부터 시작한다.
입력
첫째 줄에 배열의 크기 N이 주어진다. N은 105보다 작거나 같은 자연수이다. 둘째 줄에 k가 주어진다. k는 min(10^9, N^2)보다 작거나 같은 자연수이다.
출력
B[k]를 출력한다.
제출
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
long start = 1, end =K;
long ans = 0;
while (start <= end) {
long middle = (start + end) / 2;
long cnt = 0;
for (int i = 1; i <= N; i++) {
cnt+= Math.min(middle / i, N);
}
if (cnt < K) {
start = middle +1;
}else {
ans = middle;
end = middle -1;
}
}
System.out.println(ans);
}
}
예제
3
7
결과
728x90
'JAVA > 백준' 카테고리의 다른 글
[Java] 백준 1715 카드 정렬하기 - 그리디 알고리즘(2) (0) | 2022.11.15 |
---|---|
[Java] 백준 11047 동전 0 - 그리디 알고리즘(1) (0) | 2022.11.14 |
[Java] 백준 2343 기타 레슨 - 이진 탐색(2) (0) | 2022.11.12 |
[Java] 백준 1920 수 찾기 - 이진 탐색(1) (0) | 2022.11.11 |
[Java] 백준 1167 트리의 지름 - 너비 우선 탐색(3) (0) | 2022.11.10 |
댓글