🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] λ‹€μŒ 큰 숫자 (level2, python)

개발자 HOON 2022. 9. 8. 17:55

문제 μ„€λͺ…

 

μžμ—°μˆ˜ n이 μ£Όμ–΄μ‘Œμ„ λ•Œ, n의 λ‹€μŒ 큰 μˆ«μžλŠ” λ‹€μŒκ³Ό 같이 μ •μ˜ ν•©λ‹ˆλ‹€.

  • 쑰건 1. n의 λ‹€μŒ 큰 μˆ«μžλŠ” n보닀 큰 μžμ—°μˆ˜ μž…λ‹ˆλ‹€.
  • 쑰건 2. n의 λ‹€μŒ 큰 μˆ«μžμ™€ n은 2μ§„μˆ˜λ‘œ λ³€ν™˜ν–ˆμ„ λ•Œ 1의 κ°―μˆ˜κ°€ κ°™μŠ΅λ‹ˆλ‹€.
  • 쑰건 3. n의 λ‹€μŒ 큰 μˆ«μžλŠ” 쑰건 1, 2λ₯Ό λ§Œμ‘±ν•˜λŠ” 수 쀑 κ°€μž₯ μž‘μ€ 수 μž…λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄μ„œ 78(1001110)의 λ‹€μŒ 큰 μˆ«μžλŠ” 83(1010011)μž…λ‹ˆλ‹€.

μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, n의 λ‹€μŒ 큰 숫자λ₯Ό return ν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 


μ œν•œ 사항
  • n은 1,000,000 μ΄ν•˜μ˜ μžμ—°μˆ˜ μž…λ‹ˆλ‹€.

 


μž…μΆœλ ₯ 예

 

n result
78 83
15 23

μž…μΆœλ ₯ 예 μ„€λͺ…

 

μž…μΆœλ ₯ 예#1

문제 μ˜ˆμ‹œμ™€ κ°™μŠ΅λ‹ˆλ‹€.


μž…μΆœλ ₯ 예#2


15(1111)의 λ‹€μŒ 큰 μˆ«μžλŠ” 23(10111)μž…λ‹ˆλ‹€.

 


풀이 μ½”λ“œ

def solution(n):
    next = n
    answer = 0
    while True:
        next += 1
        if bin(n)[2:].count('1') == bin(next)[2:].count('1'):
            answer = next
            break
    
    return answer

 

브루트 포슀 문제 (brute force, 완전탐색).

λ‹€μŒ 숫자λ₯Ό 1μ”© λŠ˜λ €κ°€λ©΄μ„œ, μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν–ˆμ„ λ•Œ 1의 κ°―μˆ˜κ°€ 처음 nκ³Ό 같은지 λΉ„κ΅ν•˜κ³ , κ°™λ‹€λ©΄ break ν›„ λ¦¬ν„΄ν•˜λŠ” κ°„λ‹¨ν•œ λ‘œμ§μ΄λ‹€.