Algorithm/๋ฌธ์ œํ’€์ด

[๋ฐฑ์ค€] 1094๋ฒˆ - ๋ง‰๋Œ€๊ธฐ (python)

moaoh 2021. 9. 8. 18:58

 

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

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

www.acmicpc.net


๋ฌธ์ œ

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

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

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

X๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์œ„์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๋ฉด, ๋ช‡ ๊ฐœ์˜ ๋ง‰๋Œ€๋ฅผ ํ’€๋กœ ๋ถ™์—ฌ์„œ Xcm๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— X๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. X๋Š” 64๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

๋ฌธ์ œ์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค๋ฉด, ๋ช‡ ๊ฐœ์˜ ๋ง‰๋Œ€๋ฅผ ํ’€๋กœ ๋ถ™์—ฌ์„œ Xcm๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

23

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

4

์˜ˆ์ œ ์ž…๋ ฅ 2 ๋ณต์‚ฌ

32

์˜ˆ์ œ ์ถœ๋ ฅ 2 ๋ณต์‚ฌ

1

์˜ˆ์ œ ์ž…๋ ฅ 3 ๋ณต์‚ฌ

64

์˜ˆ์ œ ์ถœ๋ ฅ 3 ๋ณต์‚ฌ

1

์˜ˆ์ œ ์ž…๋ ฅ 4 ๋ณต์‚ฌ

48

์˜ˆ์ œ ์ถœ๋ ฅ 4 ๋ณต์‚ฌ

2

ํ’€์ด๊ณผ์ •

๋ฌธ์ œ๊ฐ€ ์–ด๋ ต๊ฒŒ ์ ํ˜€์žˆ๋Š”๊ฑด์ง€ ์ œ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šด๊ฑด์ง€ ๋ฌธ์ œํ•ด์„์„ ํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ ์˜ค๋žœ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์—ˆ๋˜๊ฑฐ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ๋‚˜๋งˆ ์ •๋ฆฌ๋ฅผ ํ•˜์ž๋งŒ

"64cm ๋ง‰๋Œ€๊ธฐ๋ฅผ ๊ณ„์† 1/2์”ฉ ์งค๋ผ๊ฐ€๋ฉด์„œ ( 64, 32, 16, 8, 4, 2, 1 ) ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋“ค์–ด์˜จ ๋ง‰๋Œ€๊ธฐ์˜ ๊ธธ์ด๋งŒํผ

์ž˜๋ผ์ง„๋ง‰๋Œ€๊ธฐ๋ฅผ ๋ถ™์—ฌ์„œ ๋งŒ๋“ค๋ ค๋ฉด ๋ช‡๊ฐœ์˜ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ํ•„์š”ํ•œ๊ฐ€?" ๋ผ๋Š” ๋ฌธ์ œ์˜€์—ˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ๊ฐ’์„ ํ•ด์„ํ•ด๋ณด์ž๋ฉด

 

23 = 16 + 4 + 2 + 1

32 = 32

64 = 64

48 = 32 + 16

 

์œ„์™€๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋‚˜์˜จ ๋ง‰๋Œ€๊ธฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€์—ˆ์Šต๋‹ˆ๋‹ค.

code

x = int(input())
count = 0
n = 64
while x > 0:
	if n > x:
		n = n // 2
	else:
		count += 1
		x -= n
print(count)

ํ›„๊ธฐ์“ฐ

๋ฌธ์ œ๋ฅผ ํ•ด์„ํ•˜๋Š”๋ฐ์—๋Š” ์–ด๋ ค์› ์—ˆ์ง€๋งŒ ํ’€์ด์˜ ๊ฒฝ์šฐ X์˜ ๊ฐ’๋ณด๋‹ค ํ˜„์žฌ๊ฐ’์ด ๋” ์ž‘๋‹ค๋ฉด
๊ทธ๋ƒฅ ๋นผ๋Š” ํ˜•์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ๊ฐœ์ˆ˜๋งŒ ์นด์šดํŠธํ•ด๋„๋˜์„œ ํฌ๊ฒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ ์œผ๋กœ ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์˜€๋˜๊ฑฐ๊ฐ™์•„์š”.