[๋ฌธ์ ๋งํฌ] ๐
ํ๋ก๊ทธ๋๋จธ์ค
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'์ ๊ฐ์์ ์ผ์นํ๊ธฐ ๋๋ฌธ์ด๋ค.
'๐งฉ Algorithm > [Programmers] Level 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers] L2. ๊ตฌ๋ช ๋ณดํธ (Python/ํฌ ํฌ์ธํฐ) (0) | 2024.11.15 |
|---|---|
| [Programmers] L2. ์์ด ๋๋ง์๊ธฐ (Python) (1) | 2024.11.11 |
| [Programmers] L2. ์นดํซ (์์ ํ์/Python) (0) | 2024.11.11 |
| [Programmers] L2. ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (Python) (0) | 2024.11.11 |
| [Programmers] L2. ํผ๋ณด๋์น ์ (Python) (0) | 2024.11.10 |