๊ธฐ๋ก๋ฐฉ

BOJ_1300 : K๋ฒˆ์งธ ์ˆ˜ ๋ณธ๋ฌธ

CodingTest/Java

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

Soom_1n 2024. 2. 5. 13:58

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

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

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

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • N x N ์ธ ๋ฐฐ์—ด A๊ฐ€ ์žˆ๊ณ , A[i][j] = ixj ์ด๋‹ค.
  • ์ผ์ฐจ์› ๋ฐฐ์—ด B์— A๋ฅผ ๋„ฃ๊ณ  ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ–ˆ์„ ๋•Œ, B[k]๋ฅผ ๊ตฌํ•œ๋‹ค.
  • ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • ๋ฐฐ์—ด A์˜ ์›์†Œ๋“ค ์ค‘ ์ค‘์•™๊ฐ’ ๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋ฉฐ ์ด์ง„ ํƒ์ƒ‰์„ ํ†ตํ•ด ํ’€์ดํ•œ๋‹ค.
    • ์ค‘์•™๊ฐ’ ๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋“ค์ด K๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ฅผ ์ค‘์•™๊ฐ’ +1 ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • ์ค‘์•™๊ฐ’๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋“ค์ด K์ด์ƒ์ด๋ผ๋ฉด, ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ์ค‘์•™๊ฐ’ -1 ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊ฐ€ ๊ต์ฐจ๋˜์—ˆ์„๋•Œ, ์‹œ์ž‘ ์ธ๋ฑ์Šค๊ฐ€ ํƒ์ƒ‰ ๊ฒฐ๊ณผ์ด๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());
        int K = Integer.parseInt(br.readLine());

        int start = 1;
        int end = K;

        while (start <= end) {
            int mid = (start + end) / 2;
            int cnt = 0;
            for (int i = 1; i <= N; i++) {
                cnt += Math.min(N, mid / i);
            }
            if (cnt < K) start = mid + 1;
            else end = mid - 1;
        }

        bw.write(Integer.toString(start));
        bw.flush();
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์ด์ง„ ํƒ์ƒ‰์œผ๋กœ ์ค‘์•™๊ฐ’๋ณด๋‹ค ์ž‘์€ ์›์†Œ์˜ ์ˆ˜๋ฅผ ์„ธ๋ฉฐ ๊ณ„์‚ฐํ•œ๋‹ค.
    • ์ค‘์•™๊ฐ’์„ ๋ฐฐ์—ด A์˜ ํ–‰ ์ธ๋ฑ์Šค๋กœ ๋‚˜๋ˆˆ ๋ชซ์€, ํ•ด๋‹น ํ–‰์—์„œ ์ค‘์•™๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์›์†Œ์˜ ์ˆ˜์ด๋‹ค.
      (๋‹จ, N๋ณด๋‹ค ํฌ๋‹ค๋ฉด N์ด ์ค‘์•™๊ฐ’๋ณด๋‹ค ์ž‘์€ ์›์†Œ ์ˆ˜๊ฐ€ ๋œ๋‹ค.)
    • ์ค‘์•™๊ฐ’๋ณด๋‹ค ์ž‘์€ ์›์†Œ์˜ ์ˆ˜๊ฐ€ K๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, K๋ฒˆ์งธ ์ˆ˜๋Š” ๋” ํฐ์ชฝ์— ์กด์žฌํ•œ๋‹ค.
      • ์ค‘์•™๊ฐ’๋ณด๋‹ค ํฐ ์ชฝ์„ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด start๋ฅผ mid+1๋กœ ๋Š˜๋ฆฌ๊ณ  ํƒ์ƒ‰ํ•œ๋‹ค.
    • ์ค‘์•™๊ฐ’๋ณด๋‹ค ์ž‘์€ ์›์†Œ ์ˆ˜๊ฐ€ K ์ดํ•˜๋ผ๋ฉด, K๋ฒˆ์งธ ์ˆ˜๋Š” ๊ฐ™๊ฑฐ๋‚˜ ๋” ์ž‘์€ ์ชฝ์— ์กด์žฌํ•œ๋‹ค.
      • ์ค‘์•™๊ฐ’๋ณด๋‹ค ์ž‘์€ ์ชฝ์„ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด end๋ฅผ mid - 1๋กœ ์ค„์ด๊ณ  ํƒ์ƒ‰ํ•œ๋‹ค.
    • start์™€ end๊ฐ€ ๊ต์ฐจ๋˜์—ˆ์„ ๋•Œ, start๊ฐ€ ํƒ์ƒ‰ ๊ฒฐ๊ณผ์ด๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์ด ๋ฌธ์ œ๋Š” ์ด์ง„ ํƒ์ƒ‰์ด๋ผ๋Š” ๊ฒƒ์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ ๋ถ€ํ„ฐ๊ฐ€ ์–ด๋ ค์šด ๋ฌธ์ œ๋ผ๊ณ  ํ•œ๋‹ค.
    • ๊ต์žฌ๋ฅผ ํ†ตํ•ด ํ’€์ด ๋ฐฉ๋ฒ•์„ ๋จผ์ € ์‚ดํŽด๋ณด๊ณ  ํ’€์ด๋ฅผ ํ•ด๋ณด์•„์„œ ๋ฐ”๋กœ ๋งž์•˜์ง€๋งŒ, ํ˜ผ์ž ํ’€์—ˆ์œผ๋ฉด ์ ˆ๋Œ€ ๋ชปํ’€์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.
    • ์ด๋Ÿฐ ๋งค๊ฐœ ๋ณ€์ˆ˜ ํƒ์ƒ‰ ๋ฐฉ์‹์€ ์ •๋ง ๊ธฐ๋ฐœํ•œ ํ’€์ด๊ฐ€ ๋งŽ์€ ๊ฒƒ ๊ฐ™๊ณ , ์•„์ง ํ•œ์ฐธ ์—ฐ์Šตํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1744 : ์ˆ˜ ๋ฌถ๊ธฐ  (0) 2024.02.11
BOJ_1715 : ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ  (0) 2024.02.11
BOJ_2343 : ๊ธฐํƒ€ ๋ ˆ์Šจ  (0) 2024.02.05
BOJ_11404 : ํ”Œ๋กœ์ด๋“œ  (0) 2024.01.31
BOJ_1517 : ๋ฒ„๋ธ” ์†ŒํŠธ  (0) 2024.01.26