๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[ ํŒŒ์ด์ฌ(python) ] ๋ฐฑ์ค€ 3460 - ์ด์ง„์ˆ˜

by YWTechIT 2021. 5. 12.
728x90

๐Ÿ“ ๋ฐฑ์ค€ 3460 - ์ด์ง„์ˆ˜

๋ฐฑ์ค€ 3460 - ์ด์ง„์ˆ˜


โšก๏ธ ๋‚˜์˜ ํ’€์ด

1์˜ ์œ„์น˜๋ฅผ ์ฐพ์œผ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ด๊ณ  ์ž…๋ ฅ์„ bin ํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ๋Š”๋ฐ ์ค‘์š”ํ•œ ์ ์€, binํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ob1010์ฒ˜๋Ÿผ ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ 1 ๋Œ€์‹  '1'์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž.

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค๊ฐ€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฑฐ๊พธ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ range(n-1, -1, -1) ๋Œ€์‹  ์ถœ๋ ฅ๋ถ€๋ถ„์— [-i-1]๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ผ๋ถ€๋กœ ๋’ค์ง‘์„ ํ•„์š” ์—†์ด ๋‹จ์ˆœํ•˜๊ฒŒ ์ถœ๋ ฅ๋งŒ ๋ฐ”๊พธ๋ฉด ๋˜๋Š” ์ฝ”๋“œ์˜€๋‹ค. ๊ธฐ๋กํ•ด๋‘๊ณ  ์จ๋จน์–ด์•ผ๊ฒ ๋‹ค.

728x90
  1. bin ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ 10์ง„์ˆ˜ ํ˜•ํƒœ์˜ ์ž…๋ ฅ์„ 2์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. binํ•จ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ฒŒ๋˜๋ฉด ob1010๊ณผ ๊ฐ™์€ ๊ฐ’์ด ๋‚˜์˜ค๋Š”๋ฐ ์ˆซ์ž๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์Šฌ๋ผ์ด์‹ฑ์œผ๋กœ [2:] ์ž˜๋ผ์ค€๋‹ค.
  2. ์ตœํ•˜์œ„ ๋น„ํŠธ(least significant bit, lsb)์˜ ์œ„์น˜๊ฐ€ 0์ด๋ฏ€๋กœ, ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฑฐ๊พธ๋กœ ๋’ค์ง‘๋Š”๋‹ค.
  3. enumerate ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ value๊ฐ€ '1'์ธ ๊ฒฝ์šฐ ํ•ด๋‹น index๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.
# ๋‚˜์˜ ํ’€์ด
T = int(input())
for _ in range(T):
    n = bin(int(input()))[2:]
    for idx, val in enumerate(n[::-1]):
        if val == '1':
            print(idx, end=' ')
# ๋‹ค๋ฅธ์‚ฌ๋žŒ์˜ ํ’€์ด
T = int(input())

for _ in range(T):
    n = bin(int(input()))[2:]
    for i in range(len(n)):
        if n[-i - 1] == '1':
            print(i, end=' ')
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€