250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 (λ‹€μŒ 큰 숫자) λ³Έλ¬Έ

πŸ“ Coding Test/Programmers

[Python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ level2 (λ‹€μŒ 큰 숫자)

γ…… γ…œ γ…” γ…‡ 2022. 11. 13. 15:35
728x90

1. 문제 μ„€λͺ…

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

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

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

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

 

 

 

 

2. μ œν•œ 쑰건

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

 

 

 

 

 

 

3. λ‚΄ 풀이

def solution(n):
    n1 = str(bin(n)).count('1')
    for i in range(n+1, 1000001):
        if str(bin(i)).count('1') == n1:
            break
    return i

 

1. bin()ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 10μ§„μˆ˜λ₯Ό μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•œ λ’€ count()ν•¨μˆ˜λ‘œ 1의 개수 카운트

2. μž…λ ₯κ°’ n보닀 큰 μˆ«μžλΆ€ν„° μ΅œλŒ€ 수인 1,000,000κΉŒμ§€ λ°˜λ³΅ν•˜μ—¬ nκ³Ό 1의 κ°œμˆ˜κ°€ κ°™μœΌλ©΄ break ν›„ i λ°˜ν™˜

 

 

 

4. λ‹€λ₯Έ μ‚¬λžŒ 풀이

def nextBigNumber(n):
    num1 = bin(n).count('1')
    while True:
        n = n + 1
        if num1 == bin(n).count('1'):
            break
    return n

 

방식은 λΉ„μŠ·ν•˜μ§€λ§Œ for문이 μ•„λ‹Œ whileλ¬Έ μ‚¬μš©

728x90
Comments