๋ฐฑ์ค€ ๋ฌผ๋ณ‘ 1052๋ฒˆ ํŒŒ์ด์ฌ

2022. 7. 18. 09:04ใ†๐Ÿ”ฑ Algorithm/Greedy

 

 

 

1052๋ฒˆ: ๋ฌผ๋ณ‘

์ง€๋ฏผ์ด๋Š” N๊ฐœ์˜ ๋ฌผ๋ณ‘์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ฐ ๋ฌผ๋ณ‘์—๋Š” ๋ฌผ์„ ๋ฌดํ•œ๋Œ€๋กœ ๋ถ€์„ ์ˆ˜ ์žˆ๋‹ค. ์ฒ˜์Œ์— ๋ชจ๋“  ๋ฌผ๋ณ‘์—๋Š” ๋ฌผ์ด 1๋ฆฌํ„ฐ์”ฉ ๋“ค์–ด์žˆ๋‹ค. ์ง€๋ฏผ์ด๋Š” ์ด ๋ฌผ๋ณ‘์„ ๋˜ ๋‹ค๋ฅธ ์žฅ์†Œ๋กœ ์˜ฎ๊ธฐ๋ ค๊ณ  ํ•œ๋‹ค. ์ง€๋ฏผ์ด๋Š” ํ•œ ๋ฒˆ

www.acmicpc.net

 

 

์ ‘๊ทผ

์ด์ง„๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.

 

์ฝ”๋“œ

์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž N์„ bin() ๋ฉ”์„œ๋“œ๋กœ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  1์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

์ด 1์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ•ด๋‹น ์ˆซ์ž N ์—์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌผ๋ณ‘์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด N ์ด 3์ด๋ผ๋ฉด, ์„ธ ๊ฐœ์˜ ๋ฌผ๋ณ‘์—์„œ ๋ฌธ์ œ์˜ ์กฐ๊ฑด๋Œ€๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌผ๋ณ‘์˜ ๊ฐœ์ˆ˜๋Š” 2๊ฐœ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋ž˜์„œ while bin(N).count('1') > K: ์ด๋ผ๋Š” ์กฐ๊ฑด์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ๋ฌผ๋ณ‘์˜ ๊ฐœ์ˆ˜๋Š” K ๋ฅผ ๋„˜์ง€ ์•Š์•„์•ผ ํ•˜๋‹ˆ๊นŒ. 

 

# 1. ์ผ์ผ์ด ๋‹ค ๋”ํ•ด๋ณธ๋‹ค.

์•ฝ๊ฐ„ ๋ธŒ๋ฃจํŠธ ํฌ์Šค ๋ฐฉ์‹์ด ์•„๋‹๊นŒ ์‹ถ๋‹ค. 

N, K = map(int, input().split())

added_bottle = 0

while bin(N).count('1') > K:
    N += 1
    added_bottle += 1

print(added_bottle)

 

# 2. ์ด์ง„๋ฒ• ์ ‘๊ทผ

์„ค๋ช…์€ ์ฃผ์„์— ๋‹ฌ์•„๋†“์•˜๋‹ค ใ…ˆใ……

N, K = map(int, input().split())

added_bottle = 0

while bin(N).count('1') > K:
    idx = bin(N)[::-1].index('1')  # N์—์„œ 1์ด ์ฒ˜์Œ ๋‚˜ํƒ€๋‚œ index ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋’ค์ง‘๋Š”๋‹ค.
    bi_to_decimal = 2 ** idx  # ํ•ด๋‹น ์ธ๋ฑ์Šค(์ด์ง„์ˆ˜)๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜
    added_bottle += bi_to_decimal
    N += bi_to_decimal

print(added_bottle)