๐ ๋ฌธ์
https://www.acmicpc.net/problem/1094
๋ฌธ์
์ง๋ฏผ์ด๋ ๊ธธ์ด๊ฐ 64cm์ธ ๋ง๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ ๋ , ๊ทธ๋ ๊ธธ์ด๊ฐ Xcm์ธ ๋ง๋๊ฐ ๊ฐ์ง๊ณ ์ถ์ด์ก๋ค. ์ง๋ฏผ์ด๋ ์๋ ๊ฐ์ง๊ณ ์๋ ๋ง๋๋ฅผ ๋ ์์ ๋ง๋๋ก ์๋ฅธ๋ค์์, ํ๋ก ๋ถ์ฌ์ ๊ธธ์ด๊ฐ Xcm์ธ ๋ง๋๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ค.
๋ง๋๋ฅผ ์๋ฅด๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ ๋ฐ์ผ๋ก ์๋ฅด๋ ๊ฒ์ด๋ค. ์ง๋ฏผ์ด๋ ์๋์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ ๋ง๋๋ฅผ ์๋ฅด๋ ค๊ณ ํ๋ค.
- ์ง๋ฏผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ง๋์ ๊ธธ์ด๋ฅผ ๋ชจ๋ ๋ํ๋ค. ์ฒ์์๋ 64cm ๋ง๋ ํ๋๋ง ๊ฐ์ง๊ณ ์๋ค. ์ด๋, ํฉ์ด X๋ณด๋ค ํฌ๋ค๋ฉด, ์๋์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- ๊ฐ์ง๊ณ ์๋ ๋ง๋ ์ค ๊ธธ์ด๊ฐ ๊ฐ์ฅ ์งง์ ๊ฒ์ ์ ๋ฐ์ผ๋ก ์๋ฅธ๋ค.
- ๋ง์ฝ, ์์์ ์๋ฅธ ๋ง๋์ ์ ๋ฐ ์ค ํ๋๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋จ์์๋ ๋ง๋์ ๊ธธ์ด์ ํฉ์ด X๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด, ์์์ ์๋ฅธ ๋ง๋์ ์ ๋ฐ ์ค ํ๋๋ฅผ ๋ฒ๋ฆฐ๋ค.
- ์ด์ , ๋จ์์๋ ๋ชจ๋ ๋ง๋๋ฅผ ํ๋ก ๋ถ์ฌ์ Xcm๋ฅผ ๋ง๋ ๋ค.
X๊ฐ ์ฃผ์ด์ก์ ๋, ์์ ๊ณผ์ ์ ๊ฑฐ์น๋ค๋ฉด, ๋ช ๊ฐ์ ๋ง๋๋ฅผ ํ๋ก ๋ถ์ฌ์ Xcm๋ฅผ ๋ง๋ค ์ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ X๊ฐ ์ฃผ์ด์ง๋ค. X๋ 64๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
๋ฌธ์ ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค๋ฉด, ๋ช ๊ฐ์ ๋ง๋๋ฅผ ํ๋ก ๋ถ์ฌ์ Xcm๋ฅผ ๋ง๋ค ์ ์๋์ง ์ถ๋ ฅํ๋ค.
โ๏ธ ํ์ด
๐ก ๊ฐ์ฅ ์์ ๋ง๋๋ฅผ ๊บผ๋ด๊ธฐ ์ํด ์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ๋ค.
โ๏ธ ๊บผ๋ธ ๋ง๋ ๊ธธ์ด๋ฅผ ๋ฐ์ผ๋ก ๋๋๊ณ ๋จ์์๋ ๋ง๋๋ค ํฉ์ ๋ํด๋ณธ๋ค.
โ๏ธ ๋ํด๋ณธ ๊ฐ์ด X๋ณด๋ค ํฌ๋ฉด, ๋ฐ์ผ๋ก ๋๋ ๊ฒ ์ค ํ๋๋ ๋ฒ๋ฆฌ๊ณ , ํ๋๋ง ํ์ ๋ฃ๋๋ค.
โ๏ธ ๋ํด๋ณธ ๊ฐ์ด X๋ณด๋ค ์์ผ๋ฉด, ์ ๋ฐ ๋๋ ๊ฒ ๋ ๊ฐ๋ฅผ ํ์ ๋ชจ๋ ๋ฃ๋๋ค.
๐โ๏ธ ์๊ฒฌ
์ฌ์ค ๋นํธ๋ง์คํน์ ํ๋ ค๊ณ ๊ณ ๋ฅธ ๋ฌธ์ ์ธ๋ฐ........................์คํฐ๋ ์ฌ๋๋ค ์๋ฌด๋ ๊ทธ๋ ๊ฒ ์ํ์๋ค(ใ ใ )
๐ป ์์ค์ฝ๋: ์๋ฐ(Java)
public class Main_๋ฐฑ์ค_1094_๋ง๋๊ธฐ_์ค๋ฒV {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int X = sc.nextInt();
// 64->32->(16,16)->(16,8)->(16,4,4)->(16,4,2,2)->(16,4,2,1)
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.offer(64);
int temp = 64;
while(true) {
int min = queue.poll();
int half = min/2;
temp -= min;
if(temp+half < X) {
queue.offer(half);
temp+=min;
if(temp==X) break;
}else temp+=half;
queue.offer(half);
}
System.out.println(queue.size());
}//end of main
}//end of class
๐ ๐ ๐
๏ผฐ๏ฝ๏ฝ๏ฝ๏ฝ ๏ฝ ๏ผข๏ฝ ๏ผณ๏ผก๏ผน
๐๐ฉ๐ข๐ฏ๐ฌ๐ด ๐ง๐ฐ๐ณ ๐ณ๐ฆ๐ข๐ฅ๐ช๐ฏ๐จ