๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€ ์Šคํ„ฐ๋”” 7์ฃผ์ฐจ] 1094 ๋ง‰๋Œ€๊ธฐ ์‹ค๋ฒ„5 - ์ž๋ฐ”(JAVA)

๐Ÿ“‘ ๋ฌธ์ œ

https://www.acmicpc.net/problem/1094

 

1094๋ฒˆ: ๋ง‰๋Œ€๊ธฐ

์ง€๋ฏผ์ด๋Š” ๊ธธ์ด๊ฐ€ 64cm์ธ ๋ง‰๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์–ด๋Š ๋‚ , ๊ทธ๋Š” ๊ธธ์ด๊ฐ€ Xcm์ธ ๋ง‰๋Œ€๊ฐ€ ๊ฐ€์ง€๊ณ  ์‹ถ์–ด์กŒ๋‹ค. ์ง€๋ฏผ์ด๋Š” ์›๋ž˜ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ง‰๋Œ€๋ฅผ ๋” ์ž‘์€ ๋ง‰๋Œ€๋กœ ์ž๋ฅธ๋‹ค์Œ์—, ํ’€๋กœ ๋ถ™์—ฌ์„œ ๊ธธ์ด๊ฐ€ Xcm์ธ ๋ง‰๋Œ€

www.acmicpc.net

๋”๋ณด๊ธฐ

๋ฌธ์ œ

์ง€๋ฏผ์ด๋Š” ๊ธธ์ด๊ฐ€ 64cm์ธ ๋ง‰๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์–ด๋Š ๋‚ , ๊ทธ๋Š” ๊ธธ์ด๊ฐ€ Xcm์ธ ๋ง‰๋Œ€๊ฐ€ ๊ฐ€์ง€๊ณ  ์‹ถ์–ด์กŒ๋‹ค. ์ง€๋ฏผ์ด๋Š” ์›๋ž˜ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ง‰๋Œ€๋ฅผ ๋” ์ž‘์€ ๋ง‰๋Œ€๋กœ ์ž๋ฅธ๋‹ค์Œ์—, ํ’€๋กœ ๋ถ™์—ฌ์„œ ๊ธธ์ด๊ฐ€ Xcm์ธ ๋ง‰๋Œ€๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

๋ง‰๋Œ€๋ฅผ ์ž๋ฅด๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์ ˆ๋ฐ˜์œผ๋กœ ์ž๋ฅด๋Š” ๊ฒƒ์ด๋‹ค. ์ง€๋ฏผ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ๋ง‰๋Œ€๋ฅผ ์ž๋ฅด๋ ค๊ณ  ํ•œ๋‹ค.

  1. ์ง€๋ฏผ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ง‰๋Œ€์˜ ๊ธธ์ด๋ฅผ ๋ชจ๋‘ ๋”ํ•œ๋‹ค. ์ฒ˜์Œ์—๋Š” 64cm ๋ง‰๋Œ€ ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋•Œ, ํ•ฉ์ด X๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
    1. ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ง‰๋Œ€ ์ค‘ ๊ธธ์ด๊ฐ€ ๊ฐ€์žฅ ์งง์€ ๊ฒƒ์„ ์ ˆ๋ฐ˜์œผ๋กœ ์ž๋ฅธ๋‹ค.
    2. ๋งŒ์•ฝ, ์œ„์—์„œ ์ž๋ฅธ ๋ง‰๋Œ€์˜ ์ ˆ๋ฐ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฒ„๋ฆฌ๊ณ  ๋‚จ์•„์žˆ๋Š” ๋ง‰๋Œ€์˜ ๊ธธ์ด์˜ ํ•ฉ์ด X๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด, ์œ„์—์„œ ์ž๋ฅธ ๋ง‰๋Œ€์˜ ์ ˆ๋ฐ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฒ„๋ฆฐ๋‹ค.
  2. ์ด์ œ, ๋‚จ์•„์žˆ๋Š” ๋ชจ๋“  ๋ง‰๋Œ€๋ฅผ ํ’€๋กœ ๋ถ™์—ฌ์„œ 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

 

 

 

 

 

 

 

 

 

 

๐Ÿ’Ž ๐Ÿ’Ž ๐Ÿ’Ž

 

 

๏ผฐ๏ฝ๏ฝ“๏ฝ”๏ฝ…๏ฝ„ ๏ผข๏ฝ™ ๏ผณ๏ผก๏ผน

๐˜›๐˜ฉ๐˜ข๐˜ฏ๐˜ฌ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ณ๐˜ฆ๐˜ข๐˜ฅ๐˜ช๐˜ฏ๐˜จ