๐Ÿงฉ Algorithm/[Programmers] Level 2

[Programmers] L2. ์ ํ”„์™€ ์ˆœ๊ฐ„ ์ด๋™ (Python)

devCloud 2024. 11. 11. 19:57
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ’€์ด ๋ฐฉ๋ฒ•

๐Ÿ’ก ์ง์ˆ˜์™€ ํ™€์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ์ˆœ๊ฐ„์ด๋™์€ 2๋ฐฐ๋งŒํผ ํ•˜๋ฏ€๋กœ 2๋กœ ๋‚˜๋ˆ„๊ธฐ

 

N์ด 6์ด๋ผ๊ณ  ํ•  ๋•Œ, ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. ํŒŒ๋ž€์ƒ‰ ์ˆซ์ž๋Š” ์ˆœ๊ฐ„์ด๋™์„ ํ•œ ์œ„์น˜์ด๋‹ค.

  • ์ˆœ๊ฐ„์ด๋™์„ ํ•  ๋•Œ 2์˜ ๋ฐฐ์ˆ˜๋งŒํผ ์›€์ง์ด๋ฏ€๋กœ 2๋กœ ๋‚˜๋ˆ„๋Š”๋ฐ, ์ด๋•Œ ํ™€์ˆ˜์™€ ์ง์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • ํ™€์ˆ˜์ด๋ฉด -1 ์„ ํ•œ ํ›„์— 2๋กœ ๋‚˜๋ˆ ์•ผ ํ•˜๋Š”๋ฐ, ์ด ๊ณผ์ •์ด jump๋ฅผ ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
  • ๋”ฐ๋ผ์„œ ํ™€์ˆ˜์ผ ๋•Œ๋งŒ -1 ์„ ํ•ด์ฃผ๊ณ  jump ํšŸ์ˆ˜๋ฅผ ์นด์šดํŠธ ํ•ด์ค€๋‹ค.

Solution

def solution(n):
    ans = 0
    while n > 0:
        if n % 2 != 0:
            n -= 1  # jump
            ans += 1
        n //= 2

    return ans

 

๐Ÿ“Œ ์ง์ˆ˜์™€ ํ™€์ˆ˜๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ์ด์œ 

  • ์ง์ˆ˜ ์œ„์น˜์—์„œ๋Š” ์ˆœ๊ฐ„์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ฑด์ „์ง€ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ ˆ๋ฐ˜ ๊ฑฐ๋ฆฌ๋กœ ๋‚˜๋ˆˆ ์œ„์น˜์—์„œ ์ˆœ๊ฐ„์ด๋™์„ ํ†ตํ•ด ํ˜„์žฌ ์œ„์น˜๋กœ ์˜ฌ ์ˆ˜ ์žˆ์—ˆ๋˜ ์…ˆ์ด๋‹ค.
  • ๋ฐ˜๋ฉด ํ™€์ˆ˜ ์œ„์น˜์—์„œ๋Š” ํ˜„์žฌ ์œ„์น˜๋กœ ์˜ค๊ธฐ ์œ„ํ•ด ๋งˆ์ง€๋ง‰์— ๋ฐ˜๋“œ์‹œ 1์นธ ์ ํ”„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด๋•Œ ๊ฑด์ „์ง€ 1์„ ์†Œ๋ชจํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ดํ›„์—๋Š” ์ง์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์ˆœ๊ฐ„์ด๋™์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ 2๋กœ ๋‚˜๋ˆ„๋Š” ์ด์œ 

  • ์ˆœ๊ฐ„์ด๋™์„ ํ•  ๋•Œ๋งˆ๋‹ค ์ด๋™ ๊ฑฐ๋ฆฌ๊ฐ€ ํ˜„์žฌ ์œ„์น˜์˜ 2๋ฐฐ๊ฐ€ ๋˜๋ฏ€๋กœ, ๊ฑฐ๋ฆฌ๋ฅผ ์ค„์ด๋Š” ๋ฐ์—๋„ 2๋กœ ๋‚˜๋ˆ„๋ฉฐ ๊ฑฐ๊พธ๋กœ ์—ญ์ถ”์ ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๋งค ๋‹จ๊ณ„์—์„œ N์„ 2๋กœ ๋‚˜๋ˆ„๋Š” ์ž‘์—…์€, ์ˆœ๊ฐ„์ด๋™ ๊ฐ€๋Šฅํ•œ ์ง์ˆ˜ ๊ฑฐ๋ฆฌ์—์„œ ์ตœ๋Œ€ํ•œ ์ˆœ๊ฐ„์ด๋™์„ ํ•˜๋„๋ก ๋•๋Š”๋‹ค.

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

๋‹ค๋ฅธ ํ’€์ด ๋ณด๋‹ˆ ์ด๋ ‡๊ฒŒ๋„ ํ’€๋˜๋ฐ,, ์ง„์งœ ์ฒœ์žฌ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๋Œ€์ฒด ์–ด๋–ป๊ฒŒ ์ด๋ ‡๊ฒŒ ํ’€ ์ƒ๊ฐ์„ ํ–ˆ๋Š”์ง€ ๊ฐํƒ„์„ ์•ˆ ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.

def solution(n):
    return bin(n).count('1')

 

 

์ด ์ฝ”๋“œ์—์„œ๋Š” bin(n).count('1')๋ฅผ ํ†ตํ•ด 2์ง„๋ฒ•์—์„œ '1'์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด, ์ด๋™์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ฑด์ „์ง€ ์‚ฌ์šฉ๋Ÿ‰์„ ๊ตฌํ•˜๊ณ  ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ์•„์ด์–ธ ์ŠˆํŠธ๊ฐ€ ์ด๋™ํ•  ๋•Œ, ์ ํ”„ํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ '1'์˜ ๊ฐœ์ˆ˜์™€ ์ผ์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.  


 

728x90