[Baekjoon] - 1052. ๋ฌผ๋ณ‘(S1)

์˜ค๋™ํ›ˆยท2021๋…„ 11์›” 16์ผ
0

Baekjoon

๋ชฉ๋ก ๋ณด๊ธฐ
1/58
post-thumbnail

1. Problem ๐Ÿ“ƒ

๐Ÿ“š ์ถœ์ฒ˜ - 1052-๋ฌผ๋ณ‘

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

๋ฌผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์žฌ๋ถ„๋ฐฐ ํ•œ๋‹ค.

๋จผ์ € ๊ฐ™์€ ์–‘์˜ ๋ฌผ์ด ๋“ค์–ด์žˆ๋Š” ๋ฌผ๋ณ‘ ๋‘ ๊ฐœ๋ฅผ ๊ณ ๋ฅธ๋‹ค. ๊ทธ ๋‹ค์Œ์— ํ•œ ๊ฐœ์˜ ๋ฌผ๋ณ‘์— ๋‹ค๋ฅธ ํ•œ ์ชฝ์— ์žˆ๋Š” ๋ฌผ์„ ๋ชจ๋‘ ๋ถ“๋Š”๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ํ•„์š”ํ•œ ๋งŒํผ ๊ณ„์† ํ•œ๋‹ค.

์ด๋Ÿฐ ์ œ์•ฝ ๋•Œ๋ฌธ์—, N๊ฐœ๋กœ K๊ฐœ๋ฅผ ๋„˜์ง€์•Š๋Š” ๋น„์–ด์žˆ์ง€ ์•Š์€ ๋ฌผ๋ณ‘์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„, ์ƒˆ๋กœ์šด ๋ฌผ๋ณ‘์„ ์‚ด ์ˆ˜ ์žˆ๋‹ค. ์ƒ์ ์—์„œ ์‚ฌ๋Š” ๋ฌผ๋ณ‘์€ ๋ฌผ์ด 1๋ฆฌํ„ฐ ๋“ค์–ด์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, N=3์ด๊ณ , K=1์ผ ๋•Œ๋ฅผ ๋ณด๋ฉด, ๋ฌผ๋ณ‘ 3๊ฐœ๋กœ 1๊ฐœ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•œ ๋ณ‘์„ ๋˜๋‹ค๋ฅธ ๋ณ‘์— ๋ถ€์œผ๋ฉด, 2๋ฆฌํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฌผ๋ณ‘ ํ•˜๋‚˜์™€, 1๋ฆฌํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฌผ๋ณ‘ ํ•˜๋‚˜๊ฐ€ ๋‚จ๋Š”๋‹ค. ๋งŒ์•ฝ ์ƒ์ ์—์„œ ํ•œ ๊ฐœ์˜ ๋ฌผ๋ณ‘์„ ์‚ฐ๋‹ค๋ฉด, 2๋ฆฌํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฌผ๋ณ‘ ๋‘ ๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ 4๋ฆฌํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฌผ๋ณ‘ ํ•œ ๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N์€ 107๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , K๋Š” 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ์ƒ์ ์—์„œ ์‚ฌ์•ผํ•˜๋Š” ๋ฌผ๋ณ‘์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์ •๋‹ต์ด ์—†์„ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

์˜ˆ์ œ ์ž…๋ ฅ์˜ˆ์ œ ์ถœ๋ ฅ
13 11
213 23
31000000 515808

2. Logic ๐Ÿ‘จโ€๐Ÿซ

์ด ๋ฌธ์ œ๋Š” ๊ตฌ๊ธ€๋งํ•ด์„œ ์‹ ๋ฐ•ํ•œ ํ’€์ด๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋ผ ๊ทธ๋ ‡๊ฒŒ ํ•œ๋ฒˆ ํ’€์–ด๋ดค๋‹ค.

์ผ๋‹จ 1~8๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋ƒˆ์„ ๋•Œ, ์ด์ง„์ˆ˜์—์„œ 1์ด ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ์ˆ˜๊ฐ€ ๊ณง ์‚ฌ์˜ค์ง€ ์•Š๊ณ  ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ณ‘์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋˜๊ฒŒ ๋œ๋‹ค.
๋”ฐ๋ผ์„œ K๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ดœ์ฐฎ์ง€๋งŒ, ๋งŒ์•ฝ ์ดˆ๊ณผํ•œ๋‹ค๋ฉด ๋ฌผ๋ณ‘์„ ๋” ์‚ฌ์™€์„œ ์˜ฎ๊ฒจ ๋‹ด์•„์•ผ ํ•œ๋‹ค.

  1. N์„ ์ด์ง„์ˆ˜๋กœ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŠธ ํ•ด K๊ฐœ ์ดˆ๊ณผํ•  ๋•Œ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•ด์ค€๋‹ค.
  2. N์„ 2์ง„์ˆ˜๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ฒ˜์Œ 1์ด ๋‚˜ํƒ€๋‚˜๋Š” ์œ„์น˜๋ฅผ ์ฐพ๊ณ 
  3. ํ•ด๋‹น ์œ„์น˜๋ฅผ P๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, 2^P๋งŒํผ answer์™€ N์— ๋”ํ•œ๋‹ค.
  4. answer์— ๋”ํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์˜จ ๋ฌผ๋ณ‘์˜ ๊ฐœ์ˆ˜
  5. N์—๋Š” k๊ฐœ ์ดํ•˜๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

3. Code ๐Ÿ’ป

1. ๋‹ค๋ฅธ ์‚ฌ๋žŒ ๋กœ์ง ์ฐธ์กฐํ•ด ํ‘ผ ์ฝ”๋“œ๐Ÿ˜

import sys
input = sys.stdin.readline

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

while bin(N).count('1') > K:
    plus = 2 ** (bin(N)[::-1].index('1'))
    answer += plus
    N += plus

print(answer)
profile
์‚ฝ์งˆ์˜ ๊ธฐ๋ก๋“ค๐Ÿฅ

0๊ฐœ์˜ ๋Œ“๊ธ€