Dev.baelanche

[백준 1300] K번째 수 본문

Data Structure & Algorithm/PS - JAVA

[백준 1300] K번째 수

baelanche 2019. 5. 15. 23:39
반응형

 

 

n*n 크기의 2차원 배열을 구현하기에는 메모리가 너무 크다.

문제에서 말한대로 진행하는데는 문제가 있어 보인다.

배열을 만들지 않아도 인덱스 별로 i*j 가 들어간다는걸 이미 알고 있으므로,

루프 하나로 한 줄을 한번에 카운트 해주면 되겠다.

 

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        long k = sc.nextLong();
        
        long left = 0;
        long right = (long)n*n;
        while(left <= right) {
            long mid = (left + right)/2;
            long cnt = 0;
            for(int i=1; i<=n; i++) {
                long num = mid / i;
                cnt += num > n ? n : num;
            }
            if(cnt >= k) right = mid - 1;
            else left = mid + 1;
        }
        System.out.println(left);
    }
}
반응형
Comments