๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‘ PS/BOJ

boj-1300 K๋ฒˆ์งธ ์ˆ˜

by bdd 2022. 7. 14.
 

1300๋ฒˆ: K๋ฒˆ์งธ ์ˆ˜

์„ธ์ค€์ด๋Š” ํฌ๊ธฐ๊ฐ€ N×N์ธ ๋ฐฐ์—ด A๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜ A[i][j] = i×j ์ด๋‹ค. ์ด ์ˆ˜๋ฅผ ์ผ์ฐจ์› ๋ฐฐ์—ด B์— ๋„ฃ์œผ๋ฉด B์˜ ํฌ๊ธฐ๋Š” N×N์ด ๋œ๋‹ค. B๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ–ˆ์„ ๋•Œ, B[k]๋ฅผ ๊ตฌํ•ด๋ณด์ž. ๋ฐฐ์—ด A์™€ B

www.acmicpc.net

 

 

 

 

 

 

ํ’€์ด


๋„์ €ํžˆ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†์–ด ๋‹ค๋ฅธ ๋ถ„์˜ ํ’€์ด๋ฅผ ์ฐธ์กฐํ•ด ํ’€์—ˆ๋˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ํ’€์ด ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™์€๋ฐ์š”, ํ•ต์‹ฌ ์•„์ด๋””์–ด์— ๊ด€ํ•ด์„œ๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  2์ฐจ์› ๋ฐฐ์—ด A๋Š” N X N ํ˜•ํƒœ(N์€ 10^5 ์ดํ•˜)์ด๋ฉฐ, A์— ๋“ค์–ด๊ฐˆ ๊ฐ’๋“ค์€ N^2๊ฐœ์ธ๋ฐ ์ด ๊ฐ’๋“ค์ด 1์ฐจ์› ๋ฐฐ์—ด B์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ด ๋ฌธ์ œ๋Š” ์ˆœ์ฐจ์ ์ธ ํƒ์ƒ‰์œผ๋กœ ํ’€๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ถ„ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ˆซ์ž๋ณด๋‹ค ์ž‘์€ ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ ํ–‰์— ๋ช‡ ๊ฐœ ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š”๋ฐ์š”, ์ด๋ฅผ ์œ„ํ•ด ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ˆซ์ž๋ฅผ ๊ฐ ํ–‰์˜ ์ˆ˜๋กœ ๋‚˜๋ˆ ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.  

 

 

 

 

 

 

์ด๋ฅผ ๋ง๋กœ ํ•˜๋ฉด ์ž˜ ์™€๋‹ฟ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด ์กฐ๊ธˆ ๋” ์ง๊ด€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ๊ฐ ํ–‰์„ n์œผ๋กœ ๋‚˜๋ˆ ์„œ ์ž์‹ ๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋“ค์„ ์ฐพ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ 4๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋ฅผ ์ฐพ๋Š”๊ฒฝ์šฐ ์ฒซ ํ–‰์—๋Š” 4๊ฐœ, ๋‘๋ฒˆ์งธ ํ–‰์—๋Š” 3๊ฐœ, ์„ธ ๋ฒˆ์งธ ํ–‰์—๋Š” 2๊ฐœ, ๋งˆ์ง€๋ง‰ ํ–‰์—๋Š” 1๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ์š”, ๋”ฐ๋ผ์„œ ์ด 10๊ฐœ์˜ ์ˆ˜๊ฐ€ 4๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ผ๋ฐ˜ํ™”ํ•ด๋ณด๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•˜๋ ค๋Š” ๊ฐ’์ด S์ผ๋•Œ ์ด S๋Š” 1ํ–‰๋ถ€ํ„ฐ Nํ–‰๊นŒ์ง€ i๋ฒˆ์งธ ํ–‰์—์„œ min(S/i, N)์„ ๋”ํ•œ ๊ฐ’์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” 1๋ถ€ํ„ฐ K ์‚ฌ์ด์— ์žˆ๋Š” S๊ฐ’์„ ์ฐพ์•„์•ผ ํ•˜๋ฉฐ ์ด ๊ณผ์ •์—์„œ ์ด๋ถ„ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค S์— ๋Œ€ํ•ด 1ํ–‰๋ถ€ํ„ฐ Nํ–‰๊นŒ์ง€ i๋ฒˆ์งธ ํ–‰์—์„œ min(S/i, N)์„ ๋”ํ•œ ๊ฐ’์ด K๋ณด๋‹ค ์ž‘๋‹ค๋ฉด S๊ฐ’์„ ๋” ํฐ ๋ฒ”์œ„์—์„œ ์ฐพ์•„์•ผ ํ•˜๋ฉฐ, K๋ณด๋‹ค ํฌ๋ฉด S๊ฐ’ ์ดํ•˜์—์„œ ํƒ์ƒ‰์„ ํ•ด์•ผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

๋”๋ณด๊ธฐ
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    static long n;
    static long k;
    static long result;

    public static void main(String[] args) throws Exception {
        n = input.inputLong();
        k = input.inputLong();

        long left = 1;
        long right = k;

        System.out.println(binarySearch(left, right));
    }

    static long binarySearch(long left, long right) {
        int count = 0;
        if (left > right) return result;
        long mid = (left + right) / 2;

        for (int index = 1; index <= n; index++) {
            count += Math.min(mid / index, n);
        }

        if (k <= count) {
            result = mid;
            return binarySearch(left, mid - 1);
        }
        return binarySearch(mid+1, right);
    }

    static Input input = new Input();

    static class Input {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer("");

        public long inputLong() throws Exception {
            if (!st.hasMoreElements()) st = new StringTokenizer(br.readLine());
            return Integer.parseInt(st.nextToken());
        }

        public int integer() throws Exception {
            if (!st.hasMoreElements()) st = new StringTokenizer(br.readLine());
            return Integer.parseInt(st.nextToken());
        }

        public String next() throws Exception {
            if (!st.hasMoreElements()) st = new StringTokenizer(br.readLine());
            return st.nextToken();
        }
    }
}

 

'๐Ÿ”‘ PS > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

boj-1916  (0) 2022.08.24
boj-2252  (0) 2022.08.22
boj-1850  (0) 2022.07.23
boj-1922 ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ  (0) 2022.07.19
boj-1744 ์ˆ˜ ๋ฌถ๊ธฐ  (0) 2022.07.15

๋Œ“๊ธ€