πŸ’κ³΅λΆ€/μ•Œκ³ λ¦¬μ¦˜

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ Lv.2] 2개 μ΄ν•˜λ‘œ λ‹€λ₯Έ λΉ„νŠΈ

rindev 2021. 5. 18. 04:29

https://programmers.co.kr/learn/courses/30/lessons/77885

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - 2개 μ΄ν•˜λ‘œ λ‹€λ₯Έ λΉ„νŠΈ

 

programmers.co.kr

 

μ²˜μŒμ—λŠ” 2μ§„μˆ˜λ‘œ λ°”κΏ”μ„œ 1κ³Ό 0의 갯수λ₯Ό μ„ΈλŠ” 방법을 μ‹œλ„ν–ˆμœΌλ‚˜...

μ˜ˆμ œλŠ” ν†΅κ³Όν•˜λŠ”λ° μ œμΆœν–ˆλ”λ‹ˆ μ μˆ˜λ„ 엉망이고 μ‹œκ°„μ΄ˆκ³Όλ„ λ‚˜μ„œ λΉ„νŠΈλ‘œ ν‘ΈλŠ” 법을 μ•Œμ•„λ΄€λ‹€γ… γ… 

 

 

 

πŸ™‹‍♀️ μž‘μ„±ν•œ μ½”λ“œ

μ½”λ“œ λ‚΄μ˜ 주석은 μ§€μš΄ μƒνƒœ! μœ„μ— μ„€λͺ…이 μžˆμœΌλ‹ˆκΉŒμš©...

더보기
def solution(numbers):
    answer = []
    
    def cal(n):
        last = (~n) & (n+1) #μ΅œν•˜μœ„λΉ„νŠΈ 0이 μžˆλŠ” μœ„μΉ˜
        return (n|last) & ~(last>>1)        
    
    for n in numbers:
        if n%2 == 0 :
            answer.append(n+1)
        else: #ν™€μˆ˜μΈκ²½μš°
            tmp = cal(n)
            answer.append(tmp)
    
    return answer