๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
- S1 | ์ด์ง๋ฒ
- ๋ฌผ์ ์์ด 1, 2, 4, 8, 16, ... ์ด๋ ๊ฒ ์ฆ๊ฐํ๋ฏ๋ก ์ด์ง์์ฒ๋ผ ์๊ฒผ๋ค.
- ๊ฐ์ ์๋ฅผ ๋ํ๋ฉด ๋ค์ ์ ํ๋๊ฐ ๋์จ๋ค. ์ด์ง์๋ก ๋ณด๋ฉด
- ex) 100 + 100 = 1000
- ์์๋ก ์ค๋ช
ํด๋ณด์๋ฉด N = 11 ์ผ ๋
- ๋ฌผ๋ณ: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
- ๋ฌผ๋ณํฉ: 2, 2, 2, 2, 2, 1
- ๋ฌผ๋ณํฉ: 4, 4, 2, 1
- ๋ฌผ๋ณํฉ: 8, 2, 1
- ๋ฌผ๋ณ: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
- ๋ฌผ๋ณ์ ๊ฒฐ๊ตญ 3๊ฐ๊ฐ ๋๋ค.
- 11์ ์ด์ง์๋ก ๋ฐ๊พธ๋ฉด 1011 ์ด๋ค.
- ๊ฒฐ๊ตญ 1์ ๊ฐ์๊ฐ ๋ค ํฉ์ณค์ ๋์ ๋ฌผ๋ณ์ ๊ฐ์๊ฐ ๋๋ค.
- ๊ทธ๋ผ 1์ ๊ฐ์๋ฅผ ์ค์ด๊ณ ์ถ์ผ๋ฉด ์ด์ง์ ๋ง์
์ ์ด์ฉํ๋ค.
- 1011(11) + 0001(1) => 1100(12)
- 1100(12) + 0100(4) => 10000(16)
๐ ์ด์ง์๋ฅผ ์ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์!
1์ฉ ์ฆ๊ฐ์์ผ๊ฐ๋ฉด์ ํ์ธ์ํด๋ ํต๊ณผํ ์ ์์ง๋ง ์๊ฐ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ค.
๐ป์์ค ์ฝ๋
# ๋ฌธ์ ์ ๊ทผ๋ฒ์ด ์ค์ํ๋ค.
# ๋ญ๊ฐ 2์ง๋ฒ๊ฐ์ด ์๊ฒผ๋ค.
# 2์ง๋ฒ์ผ๋ก ํ์ด๋ณด์
# N์ ์ด์ง๋ฒ์ผ๋ก ๋ฐ๊พธ๋ฉด (ex, 11 => 1011)
# ๋ฌผ๋ณ: 1,1,1,1,1,1,1,1,1,1,1
# ํฉ์น๊ธฐ: 2,2,2,2,2,1
# ํฉ์น๊ธฐ: 4,4,2,1
# ํฉ์น๊ธฐ: 8,2,1
# ๋ญ๊ฐ ๊ท์น์ด ๋ณด์ธ๋ค.
# ๊ฒฐ๋ก : N์ ์ด์ง๋ฒ์ผ๋ก ๋ฐ๊พผ ์์ 1์ ๊ฐ์๊ฐ
# ๋ฌผ์ ์ต๋๋ก ํฉ์น ํ์ ๋ฌผ๋ณ์ ๊ฐ์์ด๋ค.
N, K = map(int, input().split())
purchased_water_bottle_cnt = 0
while bin(N).count('1') > K:
idx = bin(N)[::-1].index('1')
purchased_water_bottle_cnt += 2**idx
N += 2**idx
print(purchased_water_bottle_cnt)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋ฐ์ํ
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 13023. ABCDE (0) | 2021.09.04 |
---|---|
[python] ๋ฐฑ์ค - 2615. ์ค๋ชฉ (2) | 2021.09.03 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ(์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ1) (0) | 2021.09.01 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๋ค๋จ๊ณ ์นซ์ ํ๋งค(2021 Dev-Matching: ์น ๋ฐฑ์๋ ๊ฐ๋ฐ์(์๋ฐ๊ธฐ)) (0) | 2021.08.23 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ฝ์์ ๊ฐ์์ ๋ง์ (0) | 2021.06.21 |