ALGORITHM ๐Ÿค–/Baekjoon

๋ฐฑ์ค€ - 2885

daxx0ne 2023. 5. 11. 11:33

[Silver II] ์ดˆ์ฝœ๋ฆฟ ์‹์‚ฌ - 2885

๋ฌธ์ œ ๋งํฌ

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 18412 KB, ์‹œ๊ฐ„: 232 ms

๋ถ„๋ฅ˜

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ˆ˜ํ•™, ์ •์ˆ˜๋ก 

๋ฌธ์ œ ์„ค๋ช…

ํ•™๊ต ๊ทผ์ฒ˜ ํŽธ์˜์ ์— ์ƒˆ ์ดˆ์ฝœ๋ฆฟ์ด ๋“ค์–ด์™”๋‹ค. ์ด ์ดˆ์ฝœ๋ฆฟ์€ ๋ง‰๋Œ€ ๋ชจ์–‘์ด๊ณ , ๊ฐ ๋ง‰๋Œ€๋Š” ์ •์‚ฌ๊ฐํ˜• N๊ฐœ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ดˆ์ฝœ๋ฆฟ์˜ ํฌ๊ธฐ(์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐœ์ˆ˜)๋Š” ํ•ญ์ƒ 2์˜ ์ œ๊ณฑ ํ˜•ํƒœ์ด๋‹ค. ์ฆ‰, 1, 2, 4, 8, 16, ...๊ฐœ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ƒ๊ทผ์ด๋Š” ์ ์‹ฌ์‹์‚ฌ๋กœ ์ดˆ์ฝœ๋ฆฟ์„ ๋จน๋Š”๋‹ค. ์ด๋•Œ, ์ ์–ด๋„ K๊ฐœ ์ •์‚ฌ๊ฐํ˜•์„ ๋จน์–ด์•ผ ๋‚จ์€ ์ˆ˜์—…์„ ์กธ์ง€ ์•Š๊ณ  ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋‹ค. ์ƒ๊ทผ์ด์˜ ์นœ๊ตฌ ์„ ์˜์ด๋„ ์ดˆ์ฝœ๋ฆฟ์„ ์ข‹์•„ํ•œ๋‹ค. ์„ ์˜์ด๋Š” ์ดˆ์ฝœ๋ฆฟ์€ ๋ˆ์„ ์ฃผ๊ณ  ์‚ฌ๊ธฐ ์•„๊น๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ƒ๊ทผ์ด๊ฐ€ ์ฃผ๋Š” ์ดˆ์ฝœ๋ฆฟ๋งŒ ๋จน๋Š”๋‹ค.

์ƒ๊ทผ์ด๋Š” ๋ง‰๋Œ€ ์ดˆ์ฝœ๋ฆฟ๋ฅผ ํ•˜๋‚˜ ์‚ฐ ๋‹ค์Œ์—, ์ •ํ™•ํ•˜๊ฒŒ K๊ฐœ ์ •์‚ฌ๊ฐํ˜•์ด ๋˜๋„๋ก ์ดˆ์ฝœ๋ฆฟ์„ ์ชผ๊ฐ ๋‹ค. K๊ฐœ๋Š” ์ž์‹ ์ด ๋จน๊ณ  ๋‚จ๋Š” ๊ฒƒ์€ ์„ ์˜์ด์—๊ฒŒ ์ค€๋‹ค.

๋ง‰๋Œ€ ์ดˆ์ฝœ๋ฆฟ์€ ๋‚˜๋ˆ„๊ธฐ ์กฐ๊ธˆ ์–ด๋ ต๊ฒŒ ๋˜์–ด ์žˆ์–ด์„œ, ํ•ญ์ƒ ๊ฐ€์šด๋ฐ๋กœ๋งŒ ์ชผ๊ฐœ์ง„๋‹ค. ์ฆ‰, ์ •์‚ฌ๊ฐํ˜•์ด D๊ฐœ ์žˆ๋Š” ๋ง‰๋Œ€๋Š” D/2๊ฐœ ๋ง‰๋Œ€ ๋‘ ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ์ง„๋‹ค.

K๊ฐœ ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ, ์ตœ์†Œ ๋ช‡ ๋ฒˆ ์ดˆ์ฝœ๋ฆฟ์„ ์ชผ๊ฐœ์•ผ ํ•˜๋Š”์ง€์™€ ์‚ฌ์•ผํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ดˆ์ฝœ๋ฆฟ์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ƒ๊ทผ์ด๋Š” ์ดˆ์ฝœ๋ฆฟ์„ ํ•˜๋‚˜๋งŒ ์‚ด ์ˆ˜ ์žˆ๋‹ค. ๊ผญ ํ•œ ์กฐ๊ฐ์ด K๊ฐœ์ผ ํ•„์š”๋Š” ์—†๊ณ , ์—ฌ๋Ÿฌ ์กฐ๊ฐ์— ์žˆ๋Š” ์ •์‚ฌ๊ฐํ˜•์„ ํ•ฉ์ณค์„ ๋•Œ K๊ฐœ์ด๋ฉด ๋œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค K โ‰ค 1,000,000)

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์ƒ๊ทผ์ด๊ฐ€ ๊ตฌ๋งคํ•ด์•ผํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ดˆ์ฝœ๋ฆฟ์˜ ํฌ๊ธฐ์™€ ์ตœ์†Œ ๋ช‡ ๋ฒˆ ์ชผ๊ฐœ์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt(); // ๋จน์–ด์•ผ ํ•˜๋Š” ์ •์‚ฌ๊ฐํ˜• ๊ฐœ์ˆ˜

        int cnt = 0; // ์ตœ์†Œ ์ชผ๊ฐœ๋Š” ํšŸ์ˆ˜
        int min_size = 0; // ์ตœ์†Œ ์ดˆ์ฝœ๋ฆฟ ํฌ๊ธฐ
        int size = 1;

        while (size < k) { // ์ดˆ์ฝœ๋ฆฟ ํฌ๊ธฐ๊ฐ€ ๋จน์–ด์•ผ ํ•˜๋Š” ์ •์‚ฌ๊ฐํ˜• ๊ฐœ์ˆ˜๋ณด๋‹ค ์ž‘์„ ๋•Œ๋งˆ๋‹ค
            size *= 2; // ์ดˆ์ฝœ๋ฆฟ ํฌ๊ธฐ๋ฅผ 2๋ฐฐ๋กœ ๋Š˜๋ฆฌ๊ธฐ
            min_size = size;
        }
        while (k > 0) {  // ์ตœ์†Œ ๋ช‡ ๋ฒˆ ์ชผ๊ฐœ์•ผ ํ•˜๋Š”์ง€ ๊ณ„์‚ฐ
            if (k >= size) { // k๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด K๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ดˆ์ฝœ๋ฆฟ์˜ ํฌ๊ธฐ๋งŒํผ ๊ฐ์†Œ
                k -= size;
            } else { // k๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ดˆ์ฝœ๋ฆฟ์„ ์ชผ๊ฐœ๊ณ  ํšŸ์ˆ˜ ์ฆ๊ฐ€
                size /= 2;
                cnt++;
            }
        }

        System.out.println(min_size + " " + cnt);
    }
}