Notice
Recent Posts
Recent Comments
Link
«   2024/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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 1300. K번째 수 본문

acmicpc

[BAEKJOON] 1300. K번째 수

코드와이 2021. 11. 6. 17:53

 

문제링크

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

 

이중탐색

1 2 3

2 4 6

3 6 9

 

low = 1, high = 7 이라면

mid = 4 가 되고

배열에서 4보다 작은 수는 cnt = 6(3 + 2 + 1)이 된다.

 

이중탐색이 끝날 때까지 cnt를 최신화한다.

package acmicpc.Gold3;

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

public class K번째_수 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		long k = Integer.parseInt(br.readLine());
		
		long left = 1;
		long right = k;
		long cnt = 0;
		long ans = 0;
		
		while(left <= right) {
			long mid = (left + right) / 2;
			cnt = 0;
			for(int i = 1 ; i <= n ; i++) {
				cnt += Math.min(mid / i, n);
			}
			
			if(cnt >= k) {
				ans = mid;
				right = mid - 1;
			} else {
				left = mid + 1;
			}
			
		}
		System.out.println(ans);
	}
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 11437. LCA  (0) 2021.12.01
[BAEKJOON] 2437. 저울  (0) 2021.11.23
[BAEKJOON] 2263. 트리의 순회  (0) 2021.11.06
[BAEKJOON] 1918. 후위 표기식  (0) 2021.10.24
[BAEKJOON] 1167. 트리의 지름  (0) 2021.10.18