[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);
}
}